我有一个导航系统,我想让它与禁用javascript的客户端和支持Ajax的客户端兼容。目前,我在导航中生成了动态链接,如"index.php?page=/cat/page.php"。
<li id="sidebaritem"><a href="index.php?page=<?php echo "$dirArray[$index]/$subdirArray[$subindex]"; echo $title; ?></a></li>
所以当索引有"page"变量时,它会将该页面加载到主容器中。
但我也喜欢让它用ajax(包括jquery)加载onclick。所以我添加了这个代码:
$(document).ready(function(){
$('li #sidebaritem').click(function() {
//Page Load code goes here
});
});
这不起作用,因为当我点击链接时,在li->click发生后,它会重定向到Anchor标签所指向的页面(当然是剂量)。
我花了一些时间寻找这个主题的教程,但没有发现任何有用的东西。
我怎样才能让它工作?从SEO的角度来看,这好吗?我看到这篇文章使用hash,这对SEO有好处吗?如果是,我如何使它在Java禁用的机器上工作?
抱歉英语不好,我是这门学科的新手,我边学边学。
首先,Java和JavaScript是两个独立的东西,您使用的是JavaScript。其次,除非id是唯一的,否则你应该用class="sidaritem"替换id="sidaridem",但从你给定的代码来看,我不认为它是唯一的。此外,在jQuery和CSS(选择器的来源)中,如果你使用lispace#id,这意味着你试图选择一个带有id#sidaritem的li的子元素。所以你可能会做li#sidebaritem,或者如果id不是唯一的li.sidebarritem
所以你应该试试:
<li class="sidebaritem"><a href="index.php?page=<?php echo "$dirArray[$index]/$subdirArray[$subindex]"; echo $title; ?></a></li>
和
$(document).ready(function(){
$('li.sidebaritem a').click(function() {
$("#your-main-container").load($(this).attr('href'));
return false; //prevent click from redirection
});
});
关于SEO部分:
这些链接对SEO不友好,因为它们不包含页面标题/描述的关键词(据我所知)。为了提高网站在搜索引擎中的性能,你需要用/cat/this-is-my-amazing-seo-friendly-page/
之类的东西来代替它们。因此,您可能希望将页面的url(将从标题中呈现)替换为SEO友好型。这里有一小段代码可以完成这项工作。
function replaceLink($url) {
$url = preg_replace("/[^a-zA-Z0-9'-'s]/", '', $url); //find any other symbols than letters or numbers and replace them with an empty string
$url = preg_replace("/'s+/", '-', $url); //find all spaces and replace them with a dash
return $url;
}
因此,如果你有一个页面标题:这是我令人惊叹的SEO友好页面将其传递到这样的小功能中:
$link = replaceLink("This is my amazing SEO friendly page");
你会得到这是我令人惊叹的SEO友好页面
显然,这只是改善网站SEO的基础之一。你可以在这里阅读更多关于网站seo
此外。从搜索引擎的角度来看,只要在菜单中指定了真正的链接,并且它们在没有启用JavaScript的情况下工作,AJAX页面加载就不会产生影响。
希望这能帮助