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

页面加载时使用JavaScript劫持点击事件,javascript,ajax,dom,interaction,Javascript,Ajax,Dom,Interaction,当创建任何使用JavaScript的站点时,我通常会为我的点击监听器挂接锚。这样,如果JavaScript不受支持或被关闭,该站点仍然可以为用户工作。我将大部分脚本代码放在文档末尾附近,以便首先加载内容。唯一的例外是Modernizer、google跟踪代码等 然而,这样做意味着页面上存在锚定的时间段,用户可以在JavaScript加载和附加事件侦听器之前与锚定交互 我考虑过向所有锚添加一些存根,但考虑到如果我的存根脚本位于元素之上,那么锚还没有放到页面上,因此我无法找到一种方法使其工作。我认为

当创建任何使用JavaScript的站点时,我通常会为我的点击监听器挂接锚。这样,如果JavaScript不受支持或被关闭,该站点仍然可以为用户工作。我将大部分脚本代码放在文档末尾
附近,以便首先加载内容。唯一的例外是Modernizer、google跟踪代码等

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

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

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

以前有人这样做过吗。。。还是有更好的解决办法

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

我认为这很接近。它已被('EVENT','SELECTOR',FUNCTION)替换为

您可以使用以下内容:

$(document).on('click', 'a', false); // disable all clicks
然后,在完全加载后,取下处理器:

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

隐马尔可夫模型。。。我应该提到jQuery也是我在内容之后加载的脚本之一。我将尝试一下,看看它是否有效。请参阅有关jQuery文档的更多信息。然后,您应该在开始时加载jQuery,以使其有效。当然,是的。必须有一个本机等价物,但它没有加载jQuery那么重要。理论上,您可以在
窗口中添加一个单击侦听器,并检查实际目标是否是锚,但如果锚中有子节点呢?然后它变得更复杂。您已经在加载jQuery,那么将其向上移动有什么问题?加载脚本不应干扰加载其余内容。