我有这样的代码:
window.onload= function() {
window.scrollTo(0, 0.9);
if (navigator.standalone) return;
for (var i= document.links.length; i-->0;) {
document.links[i].onclick= function() {
var req= new XMLHttpRequest();
req.onreadystatechange= function() {
if (this.readyState!==4) return;
document.body.innerHTML= this.responseText;
};
req.open('GET', this.href, true);
req.send();
return false;
};
}
};它基本上获取被单击的a的href,并将该href加载到当前正文中。现在的问题是它只起作用一次。一旦内容发生改变,只要我点击另一个链接(在新页面上),它就会重定向,url也会改变。然后ajax再次工作,因为我“真的”更改了页面并重置了整个页面。
我有点迷路了。如何将我的函数重置为永久工作?谢谢,
克里斯托弗
编辑:好的,所以我尝试了这样的方法:
function ajax(){
if (navigator.standalone) return;
for (var i= document.links.length; i-->0;) {
document.links[i].onclick= function() {
var req= new XMLHttpRequest();
req.onreadystatechange= function() {
if (this.readyState!==4) return;
document.body.innerHTML= this.responseText;
};
req.open('GET', this.href, true);
req.send();
ajax();
return false;
};}
}
window.onload= function() {
window.scrollTo(0, 0.9);
ajax();
};但无济于事...显然,在ajax()函数完成时调用它是不够的。还有没有人能帮我更多:s。这不是我的专业领域:)。
发布于 2011-06-15 05:52:00
在使用响应删除原始<body>内容之后,您必须重新建立“单击”处理程序。由于响应返回后,旧DOM中的所有内容都消失了,因此处理程序绑定也消失了。
发布于 2011-06-15 05:51:36
它被缓存了吗?在href中添加"?random=“+ Math.random。
发布于 2011-06-15 05:52:27
您将替换整个文档,包括绑定AJAX处理程序的链接。
window.onload仅在文档加载时触发,而不是在ajax调用完成时触发。
将onload处理程序放入一个新函数中,然后在就绪状态更改处理程序中手动调用它。
https://stackoverflow.com/questions/6350534
复制相似问题