我使用当前的jQuery插件(地址),我有这个代码(我使用地址插件的"SEO"方法)
$(document).ready(function() {
$.address.crawlable(1).state('/').init(function() {
$('body').delegate('.ajax', 'click', function() {
$('.ajax').address();
});
$('.ajax').address();
}).change(function(e) {
var loc = document.location.href;
if (loc != 'http://secret.riseofkings.net' + e.value) {
var myStr = e.value;
myStr = myStr.substr(1);
if (myStr) {
$("#content").html('<img src="/images/ajax.gif" />');
$("#iframe_space").html('<iframe src="http://riseofkings.net/nothing.php" style="display:none"></iframe>');
var url = $(e).val().toLowerCase().substr(1).replace(/ /g, '%20');
$("#content").load(url + '&ajax=1', function() {
$("#iframe_space").html('');
}, function(errr) {
alert('Something went wrong. Sorry for problems');
});
}
}
});
});
更新:
当我尝试添加时
alert(loc+' vs http://<?php echo $security->host()."'"; ?>+e.value);
之后
if (loc != 'http://secret.riseofkings.net' + e.value) {
它给了我http://secret.riseofkings.net/game.phpvshttp://secret.riseofkings.net/当我转到链接(/game.php?what=map)时,它会发出警报http://secret.riseofkings.net/game.phpvshttp://secret.riseofkings.net/game.php?what=map
ENDUPDATE
更新2:
这种情况正在发生,例如在Mozilla/5.0 (Windows; U; Windows NT 5.1; cs; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2
中
ENDUPDATE
但在某些Firefox版本(3.XX)和IE中存在一个无限循环。我确实访问了主页,它开始重新加载并将#/game.php?r=something
附加到地址栏的地址末尾。
你不知道那里出了什么问题吗?
这一行:
clearTimeout = window.clearTimeout(timer);
是错误的和可怕的;应该只是:
clearTimeout(timer);
我在asp.net MVC站点中的JQuery Address也遇到了类似的问题。如果我点击回一个带有hashurl的页面,它会抓狂,并无休止地循环该页面。事实证明,这个问题与mvc标准的旧版本MicrosoftAjax.js和MicrosoftAjax.debug.js文件有关。
如果打开MicrosoftAjax.debug.js文件,看到FileVersion:4.0.20526.0(这是mvc模板的默认版本),则从cdn升级调试和压缩版本(http://www.asp.net/ajaxlibrary/CDNAjax4.ashx)
请注意,这个解决方案是在另一个关于堆栈溢出的问题中找到的,所以它不是我的解决方案。我试图找到最初的问题以及谁给出了答案。
编辑:Firefox 6无限页面刷新与页面哈希标签