创建任何使用JavaScript的网站时,我通常会为点击监听器添加锚点。这样一来,如果不支持或关闭JavaScript,则该站点仍可为用户使用。我将大部分脚本代码放在文档末尾的</body>
附近,以便首先加载内容。唯一的例外是Modernizr,Google跟踪代码等。
但是,这样做意味着在页面上存在锚点的时间段内,用户可以在这段时间内在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);
关于javascript - 页面加载时使用JavaScript劫持点击事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23222804/