HTML导航,Ajax,但兼容JavaScript禁用


HTML Navigation, Ajax but compatible with JavaScript Disable

我有一个导航系统,我想让它与禁用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页面加载就不会产生影响。

希望这能帮助