页面加载时使用JavaScript的劫持点击事件

Hijack click event with JavaScript whilst page loads

本文关键字:劫持 事件 JavaScript 加载      更新时间:2023-09-26

在创建任何使用JavaScript的网站时,我通常会为我的点击侦听器挂接锚点。这样,如果JavaScript不受支持或被关闭,该网站仍将对用户有效。我将大部分脚本代码放在文档末尾</body>附近,以便首先加载内容。唯一的例外是modernizr、谷歌跟踪代码等。

然而,这样做意味着在JavaScript加载并附加事件侦听器之前,页面上存在锚点的时间段是用户可以与锚点交互的时间段。

我曾想过在所有锚中添加一些存根,但考虑到如果我的存根脚本位于<body>元素上方,则锚还没有放在页面上,我想不出一种方法来实现它。我认为这是可能的,因为旧的jQuery live()函数做了类似的事情(我知道现在已经弃用了1.7,并删除了1.9)

我的想法是为所有交互点创建一个无所事事的存根。当页面加载时,将交互指向它。加载完所有内容后,移除存根并使用完全定义的侦听器。

以前有人这样做过吗。。。还是有更好的解决方案?

我认为这是可能的,因为旧的jQuery live()函数做了类似的事情(我知道现在已经弃用了1.7,并删除了1.9)

我觉得很接近。它已被.on('EVENT', 'SELECTOR', FUNCTION)取代。

你可以使用类似的东西:

$(document).on('click', 'a', false); // disable all clicks

然后,一旦它完全加载,就将处理程序取下:

$(document).off('click', 'a', false);