修复点击事件的被劫持事件处理

时间:2014-06-07 15:26:32

标签: javascript html

几年来,我使用用户JavaScript在页面上添加其他输入按钮和可点击的span - 元素。通常我设法做这项工作,例如

        span = document.createElement("span");
        span.onclick = __oujs.onClickAddPage;
        span.appendChild(document.createTextNode("Add page"));
        containingDiv.appendChild(span);

当我点击__oujs.onClickAddPage() - 元素时,通常会调用span

然而,昨天一个网站做了一些更改(显然我不知道它们是什么)导致点击我的元素不会导致任何事件。在上面的示例中,不再调用__oujs.onClickAddPage()input - “按钮”类型的元素也是如此。

当我使用Opera时,DragonFly显示我的span仍然是该特定区域中最顶层的元素,因此它应该处理click事件。但是,我知道它们包含jQuery,这可能是痛苦的一部分。

是否有一种特殊技术(可能是Google知道的名称),他们可以使用它来做这样的事情?如何恢复控制并再次调用我的代码?我可以删除一些对象吗?

我很抱歉以相当广泛的方式提问,但我不知道自己能找到什么来解决这个问题。请问你是否需要了解一些事情。

2 个答案:

答案 0 :(得分:0)

我建议你这个步骤:

  1. 创建下一个功能:

    function stubFn(event){
      console.log('event caught', event); // this will log the click event
      __oujs.onClickAddPage.call(event.currentTarget, event); // emulate the onclick behavior
    }
    
  2. 使用span.addEventListener('click', stubFn)将侦听器添加到代码中的元素。

  3. 如果它不起作用,那么你必须对脚本和标记进行逆向工程。

    我建议检查是否有任何元素的absolutefixed位置与您的范围重叠。它可以阻止事件传播

    通常,没有办法禁止用户脚本中的元素使用内联处理程序处理事件。

答案 1 :(得分:0)

为了解决我的问题,我自己回答这个问题,而不是等待它被关闭:

对不起,这是我的错。我在另一个影响所有网站的用户JavaScript文件中犯了一个愚蠢的错误......

我重新安装了我的浏览器,并考虑重新安装我的操作系统,但幸运的是,这不是必需的。