我正在尝试创建一个完整的基于ajax的网站。现在我只是在研究它是如何工作的。我认为最好的例子是Twitter。当没有启用javascript时Twitter会做一些事情,但我无法知道如何。当您禁用javascript并转到twitter时,会将“?_twitter_noscript = 1”附加到网址。知道他们是怎么做到的吗?
亲切的问候,大安
答案 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);
});