【问题标题】:How to redirect when Javascript is disabled (like new Twitter layout)禁用 Javascript 时如何重定向(如新的 Twitter 布局)
【发布时间】:2011-02-16 18:07:38
【问题描述】:

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

亲切的问候,

大安

【问题讨论】:

  • 我没有看到禁用 JS 的行为。

标签: javascript ajax seo


【解决方案1】:

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

<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 改变了输入的值。

【讨论】:

  • 是的,在禁用 JS 的情况下,value="/?_twitter_noscript=1" 被提交到登录脚本。
  • 好的,但是如何重定向,因为如果它是隐藏输入,则需要提交或类似的东西?
  • 是的,但是他们正在处理登录表单,正在寻找该输入的值,然后采取相应的行动。
【解决方案2】:

当 Javascript 被禁用时,Twitter 使用元刷新。

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

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

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

【讨论】:

  • 我今天早上也找到了,昨天没找到的原因太傻了。我忘了你需要登录才能使用完整的 ajax twitter UI。
【解决方案3】:

在我看来,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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2012-12-13
    • 2011-05-16
    • 2014-02-14
    • 2015-01-21
    • 1970-01-01
    • 2016-10-19
    相关资源
    最近更新 更多