几年来,我使用用户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知道的名称),他们可以使用它来做这样的事情?如何恢复控制并再次调用我的代码?我可以删除一些对象吗?
我很抱歉以相当广泛的方式提问,但我不知道自己能找到什么来解决这个问题。请问你是否需要了解一些事情。
答案 0 :(得分:0)
我建议你这个步骤:
创建下一个功能:
function stubFn(event){
console.log('event caught', event); // this will log the click event
__oujs.onClickAddPage.call(event.currentTarget, event); // emulate the onclick behavior
}
使用span.addEventListener('click', stubFn)
将侦听器添加到代码中的元素。
如果它不起作用,那么你必须对脚本和标记进行逆向工程。
我建议检查是否有任何元素的absolute
或fixed
位置与您的范围重叠。它可以阻止事件传播。
通常,没有办法禁止用户脚本中的元素使用内联处理程序处理事件。
答案 1 :(得分:0)
为了解决我的问题,我自己回答这个问题,而不是等待它被关闭:
对不起,这是我的错。我在另一个影响所有网站的用户JavaScript文件中犯了一个愚蠢的错误......
我重新安装了我的浏览器,并考虑重新安装我的操作系统,但幸运的是,这不是必需的。