2009-02-11 54 views
0

场景是这样的。一个网页包含:当JavaScript执行时,Internet Explorer 6中止页面请求

  • 一些资料核实其知名度可以利用JavaScript(从超燃)
  • 一个提交按钮,它的响应时间为5秒左右

的超级链接代码被触发

<a href="javascript:void null;" onclick="MyFunction()">foo</a> 

用户:

  1. 压力机提交。
  2. 当他在等待响应时,他单击超链接,并触发切换DIV可见性的JavaScript(不执行其他请求)。
  3. 在Internet Exporer 6中,浏览器停止等待第一个请求。

这个问题在其他浏览器中不会发生,即使用户使用DIV,第一个请求被正确处理,我们导航到下一页。

有谁知道可能是什么原因造成的?这是一个已知的IE6问题吗?

回答

3

是啊,这是IE6问题与GET请求JavaScript操作超级链接触发(,其中将href设置为 '的javascript:...')。

例如如果你的JavaScript调用 someForm.submit()和方法是 GET,会有NO反应(该 请求被肯定,虽然发送)

http://webbugtrack.blogspot.com/2007/09/bug-223-magical-http-get-requests-in.html

你要么需要修改的链接,是这样的:

<a href="#bogushash" onclick="MyFunction()">foo</a> 
     ^^^^^^^^^^ 

或者总是设置链接返回false;

<a href="javascript:void null;" onclick="MyFunction();return false;">foo</a> 
                 ^^^^^^^^^^^^^ 
+0

感谢您的评论。我知道在onclick中返回false会阻止HREF,但我不认为HREF中的javascript null会导致新的请求并中止真正的请求。此外,该网页工作绝对没问题,直到有人修改MyFunction()。 – Filini 2009-02-12 09:34:10

+0

也许你必须检查对MyFunction()的更改才能得到原因的指示呢? – KooiInc 2009-02-12 14:51:12

1

我真的不认为它明智地调用javascript:void null;从链接。这可能会导致您的问题。相反,有HREF包含一个有效的链接,但防止违约行为无法完成请求

<a href="#" onclick="return MyFunction(event)">foo</a> 

其中

function MyFunction(e) 
{ 
    if (!e) e = window.event; 

    // your code 

    if (e.preventDefault) e.preventDefault(); 
    return false; 
} 
0

由于这是一个问题。我建议使用一个伪“加载”微调器,当提交被触发时覆盖可点击的内容。

1

javascript:void null应该是javascript:void(0),最好还是href="#"。如果MyFunction返回false,则应该不需要scunliffe的回答中的return false,使用onclick="return MyFunction()"

相关问题