如何在禁用Javascript时重定向(如新的Twitter布局)

时间:2011-02-16 18:07:38

标签: javascript ajax seo

我正在尝试创建一个完整的基于ajax的网站。现在我只是在研究它是如何工作的。我认为最好的例子是Twitter。当没有启用javascript时Twitter会做一些事情,但我无法知道如何。当您禁用javascript并转到twitter时,会将“?_twitter_noscript = 1”附加到网址。知道他们是怎么做到的吗?

亲切的问候,

大安

3 个答案:

答案 0 :(得分:3)

他们在注册表单上有一个隐藏的输入:

<input id="redirect_after_login" name="redirect_after_login" type="hidden" value="/?_twitter_noscript=1" />

启用脚本后,会更改为:

<input id="redirect_after_login" name="redirect_after_login" type="hidden" value="/" />

所以我的假设是他们有一些JavaScript改变了那个输入的值。

答案 1 :(得分:1)

Twitter在禁用Javascript时使用元刷新。

启用Javascript后,我在http://www.twitter.com的源代码中找到了以下代码:

<noscript>
        <meta http-equiv=refresh content="0; URL=/?_twitter_noscript=1" />
</noscript>

注意:http://twitter.com/?_twitter_noscript=1的来源不会有此代码

答案 2 :(得分:0)

对我来说,Twitter不支持禁用javascript。 我用这个代码创造了我的成功:

index.php中的

<?php
if (!isset($_SESSION)) session_start();
$url = !isset($_SESSION['ajaxpage']) ? '' : $_SESSION['ajaxpage'];
$_SESSION['ajaxpage'] = '';
if (!isset($_GET['noscript'])) echo '<noscript><meta http-equiv="refresh" content="0; URL=/'.$url.'?noscript=1" /></noscript>';
?>

在每个php文件中我调用_head.php包含:

<?php
if(!isset($_GET['ajax'])){
    if (!isset($_GET['noscript'])){
        if (!isset($_SESSION)) session_start();
        $_SESSION['ajaxpage'] = $ajax_page;
        header('Location: /#!/'.$ajax_page);
    } else {
        // normal functions, requires... of all pages
    }
}
?>

在每个php文件中我都有var到页面的链接,如:

<?php
$ajax_page = '/contact/'; //change this for each page
include_once('_head.php');
?>

所以,就是这样! 每个ajax加载,请加入'?ajax'到url,如:

$("body").delegate("a", "click", function(event){
    var lnk = $(this).attr("href");
    var addAjax = lnk.indexOf('?')>0 ? "&ajax" : "?ajax";
    $("#content").load("/"+lnk+addAjax);
});