1

我正在一个网站上工作,其中一个页面有一个文章列表和一个基于某些关键字过滤这些文章的选项。所有关键字都是链接,并列在列表的右侧。为了获得正确的 URL,每个关键字上的链接都包含 ajaxURL 的一部分,这些 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 中运行良好,++。

4

1 回答 1

3

我唯一能想到的就是console.log()在你的剧本中。在您打开开发者工具之前,该语句会在 IE 中引发 Javascript 错误。

如果这发生在您在问题中提供的代码之前,那么您的脚本的其余部分可能不会被评估,并且您的事件处理程序根本不会被绑定,导致链接只是常规链接。

于 2012-04-24T14:06:54.497 回答