文档和图像onclick优先级

时间:2013-01-06 22:51:16

标签: javascript events dom

我有一份文件。我无法改变它。
它有一个图像 图像有onclick事件(imageCallback)。

我也有一个书签。我想做document.onclick = documentCallback;
我想让documentCallback具有优先权:它应该首先运行。在我关闭书签之前,imageCallback根本不应该运行。

我该怎么做?

2 个答案:

答案 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