我有一个页面,其中有一个事件处理程序附加到onclick
事件。当事件触发时,它将文本框的内容传递给GET
要求。自从url 不在同一个域中所以我创建一个脚本标签并将网址附加到其源,如下所示
elem.onclick=fire;
function fire()
{
var text=document.getElementById('text').value;
var script=document.createElement("script");
script.className="temp";
script.src="some url"+"?param="+text;
document.body.appendChild(script);
}
现在,如果该事件被触发并且不止一次我想取消所有先前的事件GET
请求(因为他们仍然可能收到响应)并做出GET
请求最新文本。但为此我需要取消之前的请求。
我试过
document.body.removeChild(script);
script.src=null;
但这不起作用Firefox
(我在用Firefox 5
)虽然这适用于Google Chrome
.有谁知道这些请求是否可以在 Firefox 中取消,如果可以,那么如何取消?
UPDATE根据阿尔弗雷德的建议,我用了window.stop
取消请求,但不取消请求,而是将其挂起。这意味着当我查看 firebug 时,看起来好像正在发出请求,但没有响应。
解决方案很简单:要创建 HTTP 请求,请使用<img>
代替<script>
元素。而且你总是必须改变src
的属性same元素。
var img;
function fire()
{
var text = document.getElementById('text').value;
var im = img || (img = new Image());
im.src = "url"+"?param="+text;
}
您可以通过执行以下操作来确定它确实有效:您请求的 URL 应该有很长的响应时间(您可以使用 PHP 的sleep
功能)。然后,在 Firebug 中打开“网络”选项卡。如果您多次单击该按钮,您将看到所有不完整的请求都将被中止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)