我正在一个网站上工作,其中一个页面上有文章列表,并提供了根据某些关键字过滤这些文章的选项。所有关键字都是链接,并列在列表的右侧。为了获得正确的URL,每个关键字上的链接都包含ajaxURL的一部分,该部分会为给定的关键字给出正确的响应。另外,我得到了一个脚本,该脚本向所有链接添加一个“单击”事件,并将最后需要的参数附加到ajaxURL。我使用jQuery的“加载”功能“重新加载”列表,如下所示:
$('a.keyword').click(function(event){
event.preventDefault();
// Other logic
$('.list').load(ajaxURL);
}
但是,在IE9中使用过滤器时,“ ajaxURL”的内容会加载到整个页面中。即,整个页面将替换为结果列表。我发现这可能是仅在每个链接上获得的“单击”事件上使用“ event.preventDefault()”的问题,因此我添加了多种选择:
event.stopPropagtion()
return false
if(event.preventDefault){
event.preventDefault();
} else {
event.returnValue = false;
}
经过数小时的调试,尝试使用它们的不同组合并使用IE中提供的开发人员工具尝试IE7,IE8和IE9,我意识到,第一次使用IE9打开页面(不打开开发人员工具)时,我遇到了描述的问题以上。但是,当我打开开发人员工具并选择IE8时,一切正常!当我将其更改回IE9时,也会发生同样的情况! (在这种情况下,我使用了上面的所有替代方法。)
出于某种原因,这些过渡使其有效!我不知道如何解决此问题。我不能强迫用户打开开发人员工具并切换模式以使我工作。 :P有什么想法吗?开发人员工具是否添加了可以执行此操作的内容?
感谢您对此事的帮助! :-)
PS。它可以在Chrome,++中正常运行。
最佳答案
我唯一想到的就是脚本中有console.log()
。在您打开开发人员工具之前,该语句会在IE中引发Javascript错误。
如果发生的时间早于您在问题中提供的代码,则脚本的其余部分可能不会得到评估,并且事件处理程序将完全不受约束,从而导致链接只是常规链接。