2009-05-26 48 views
3

我正在开发一个默认通过AJAX加载内容的项目。如果JavaScript未启用,从服务器写入内容

我希望它检查用户(或SE bot)是否禁用JS,如果是,则通过PHP静态显示内容。

有没有办法做到这一点?我不认为noscript标签会在这里工作,因为这个页面对非JS用户或机器人来说是空的。

也做一个重定向到一个不同的页面它对我来说没有任何意义,因为原始页面的链接不会被搜索引擎考虑到,并且将无法将该页面编入索引,因为它们将会重定向。

回答

2

unobtrusive JS怎么样?您可以将纯HTML页面设为默认页面,然后使用JS隐藏或用您喜欢的AJAX控件替换笨重的页面。每个视图最终只有一个页面可以动态升级。 URL也可以安全传递。

4

当用户没有JavaScript时,没有办法自动切换到不同的页面。

我要做的是将非JS版本显示为默认版本,但在每个页面上都有一个重定向到AJAX版本的脚本,并设置一个cookie,以便所有页面从此立即显示AJAX版本。噢,如果出现任何问题,比如已经有cookie禁用JavaScript的用户,最好在非AJAX版本的链接中保留一个noscript标签。

+0

我同意在检测到cookie后留下noscript标记。具有所有的意义。 我只是不想重定向,因为我会重定向搜索引擎机器人,并且索引的页面将是非js页面。这让我非常恼火,并且我将失去链接到ajax页面的链接 – 2009-05-26 22:54:06

+0

AJAX页面通常根本不会被索引,因此将非AJAX页面编入索引正是您想要的内容 - 无论如何它们应该具有基本相同的内容。 – 2009-05-27 06:25:56

1

您可以使用<noscript> html标签。

该标签在所有主流浏览器中均受支持。这包括IE,Firefox,Opera,Chrome和Safari。

这是一个正常的例子:

<script type="text/javascript"> 
document.write("Hello World!") 
</script> 
<noscript>Your browser does not support JavaScript!</noscript> 

下面是一个使用<meta>重定向代​​码将重定向不支持javascript(测试和工程)浏览器的变化:

<script type="text/javascript"> 
document.write("Hello World!") 
</script> 
<noscript>Please wait while you're being redirected to the no-script version... 
<META http-equiv="refresh" content="1;URL=http://yoursite/index.php?version=noscript"> 
</noscript> 
1

需要考虑的两种方法如下:(CSS显示或DOM节点删除)

1)css:

考虑对JS有条件的各种节点的CSS显示控件。

Onload,JavaScript可以将相关元素的显示风格更改为“none”。

  • 如果没有JS,那么页面元素不会隐藏。

在您的onload初始化函数中,设置:elObj.style.display:none;

添加无脚本链接或通知,以便仅仅禁用JavaScript的用户可以根据您告诉他们他们没有看到的内容选择是否启用它。

OR

2)节点提取:

第二选项是有JavaScript的实际删除冗余节点的onload。

  • 机器人和非JS用户将立即,非强制访问页面元素。
  • JS用户将获得您的脚本交付的货物。

例如,您可能需要删除一个granddaddy容器部门,该部门有一个已知的id,称为“nonjs”。

我用它来从内存中删除他们的函数:(。XDOM标准化浏览器的差异该代码使用XDOM.getElementById使用您喜欢的跨浏览器的功能来代替。)

XDOM.deleteNode = function(node) { 
    if (!node || typeof node != "object") {return;} 
    var trashcan = XDOM.getElementById('xdomtrashcan'); 
    if (!trashcan) { 
     trashcan = document.createElement('DIV'); 
      // quick and dirty property set: 
     trashcan.id = 'xdomtrashcan'; 
     trashcan.style.display = 'none'; 
     document.body.appendChild(trashcan); 
    } 
    trashcan.appendChild(node); 
    trashcan.innerHTML = ""; //empty the trash 
    }; 
0

如果您有一个“家”或其他用户导航的其他页面,您可以包含一些JavaScript来设置cookie。 当用户选择目标页面时,您可以根据是否设置cookie来生成纯HTML或AJAXy页面。

这样做的一个变化是发布“着陆”页面的URL地址,该页面使用“onload”脚本设置(或未设置)cookie,并将HTML重定向到带有数据的页面。

相关问题