如果未启用JavaScript,则从服务器写入内容

时间:2009-05-26 22:39:05

标签: javascript

我正在开发一个默认情况下通过AJAX加载内容的项目。

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

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

同样重定向到不同的页面对我来说没有意义,因为搜索引擎不会考虑到原始页面的链接,因为它们将被重定向而无法索引该页面

5 个答案:

答案 0 :(得分:4)

当用户没有JavaScript时,没有办法自动更改为其他页面。

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

答案 1 :(得分:2)

unobtrusive JS怎么样?您可以将普通的html页面设为默认页面,然后使用JS隐藏或替换您喜欢的AJAX控件的笨拙位。每个视图最终只有一个页面可以自动动态升级。网址也可以安全传播。

答案 2 :(得分: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>

答案 3 :(得分:1)

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

1) CSS:

考虑以JS为条件的各种节点的css显示控件。

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

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

在onload init函数中,设置:elObj.style.display:none;

添加noscript链接或通知,以便根据您告诉他们没有看到的内容,完全禁用JavaScript的人可以选择是否启用它。

OR

2) 节点提取:

第二个选择是让JavaScript实际删除冗余节点onload。

  • Bots和非JS用户可以立即,非突兀地访问页面元素。
  • JS用户将获得您的脚本提供的商品。

例如,你可能有一个要移除的granddaddy容器分区,它有一个已知的id,说“nonjs”。

我用来从内存中删除它们的函数:

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
  };
  • (XDOM规范化浏览器差异。此代码使用XDOM.getElementById。请改用您最喜欢的跨浏览器功能。)

答案 4 :(得分:0)

如果您有一个“主页”或用户导航的其他某个页面,您可以添加一些javascript来设置Cookie。 当用户选择目标页面时,您可以生成纯HTML或AJAXy页面,具体取决于cookie是否已设置。

对此的一种看法是发布“登陆”页面的URL地址,该页面使用“onload”脚本设置(或不设置)cookie,并将HTML重定向到包含数据的页面。