繁体   English   中英

jQuery侦听器在隐身模式Chrome中间歇性工作

[英]Jquery listener works intermittently in incognito mode chrome

我包括jquery并使用它在新的浏览器窗口中打开所有链接到link.php的链接:

<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
window.onload = function() {
    $('a[href*="link.php"]').attr("target", "_blank");
};
</script>

此方法有效,但是当我在Chrome的隐身模式下测试它时,大约有1/5的时间它不起作用,并在同一窗口中打开。 我很难在chrome中进行调试,因为一旦失败,我将不在页面上并且无法检查js。 我下一步应该怎么解决这个问题?

毫无疑问,问题是缓存。 对于新的隐身窗口,缓存为空,因此需要从服务器加载网页的所有内容(图像,电影,脚本等)。

所有这些文件完全加载后,将执行分配给window.onload的回调。 因此,只要仍有负载,就不会将target设置为_blank_blank以后,单击链接将在同一页面中打开该链接。

无需等待所有元素加载,只需等待页面的html代码完全加载并且DOM准备就绪即可。

为此,您需要收听dom ready事件。 在jQuery中,您可以这样进行:

$( document ).ready( function() { 
   $('a[href*="link.php"]').attr("target", "_blank");
});

jQuery.ready()

[...]虽然JavaScript提供了呈现页面时执行代码的load事件,但只有在完全接收到所有资产(例如图像)之后,才会触发此事件。 在大多数情况下,可以在完全构建DOM层次结构后立即运行脚本。 确保传递给.ready()的处理程序将在DOM准备就绪后执行,因此通常这是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。[...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM