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

时间:2014-04-22 14:44:04

标签: javascript ajax dom interaction

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

然而,在这样做的过程中,这意味着在页面上存在锚点的时间段,用户可以在JavaScript加载和附加事件侦听器之前与它们进行交互。

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

我的想法是为所有交互点创建一个什么都不做的存根。在页面加载时将交互点指向它。一切都加载后删除存根并使用完全定义的侦听器。

有没有人在此之前做过这个...或者找到了更好的解决方案?

1 个答案:

答案 0 :(得分:1)

  

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

我认为这非常接近。它已被.on('EVENT', 'SELECTOR', FUNCTION)替换。

您可以使用以下内容:

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

然后,一旦它完全加载,请关闭处理程序:

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