我有一份文件。我无法改变它。
它有一个图像
图像有onclick事件(imageCallback)。
我也有一个书签。我想做document.onclick = documentCallback;
我想让documentCallback
具有优先权:它应该首先运行。在我关闭书签之前,imageCallback
根本不应该运行。
我该怎么做?
答案 0 :(得分:1)
删除你的imageCallback函数,并在你的document.onclick中查找event-Source:
HTML:
<img id="id-of-your-img" src="...">
的javascript:
document.onclick = function (event) {
// do what needs to be done first
//do whatever you want to do when the img was clicked
if(event.srcElement.id === 'id-of-your-img') {
}
};
编辑(我想我现在知道你想要实现的目标(提示“bookmarklet”非常重要):
var yourimg = document.getElementById('your-img-id')
, imgCallback = yourimg.onclick;
yourimg.onclick = function () {};
document.onclick = function (event) {
// do what needs to be done first
if(event.srcElement === yourimg) {
imgCallback();
}
};
这里做了什么?我们获取图像,覆盖当前的点击处理程序(但将其保存到我们的imgCallback-Var。当单击文档时,我们做任何我们想做的事情,然后看看事件源是否是我们的图像。如果是这样的话,我们执行imgCallback-Function。
答案 1 :(得分:1)
通过addEventListener添加事件处理程序并将useCapture参数设置为true:
document.addEventListener('click', documentCallback, true)
事件可以分两个阶段发送,即冒泡阶段和捕获阶段,捕获阶段首先出现,你应该Take a look at this