我在 html 中有一个 anchor 标记元素,例如:
<a href="javascript:handleEvent(this, 'abc')"></a>
现在在 javascript 函数中,我写了:
function handleEvent(sourceElement, txt) {
console.log(sourceElement);
}
consoled 元素在这种情况下作为窗口出现。 我试过 sourceElement.document.activeElement 但它似乎在 chrome 中不起作用,它作为 body 元素出现。
我无法将 anchor 标记的结构更改为“onClick”函数,因为它来自其他来源。 在这种情况下有什么方法可以找到调用元素吗?
最佳答案
真正的答案是更改 HTML,您已经说过您不能这样做。如果可以的话,我会反对的。如果您正在编写函数,并且函数名称在 HTML 中,您怎么不能更改 HTML??
但如果你真的,真的不能,你可以在加载 DOM 后更新它:
var list = document.querySelectorAll('a[href^="javascript:"]');
var x, link;
for (x = 0; x < list.length; ++x) {
link = list[x];
link.onclick = new Function(link.href.substring(11));
link.href = "javascript:;";
}
这相当顽皮,因为它使用了 Function
构造函数(非常像 eval
),但是如果您相信来源的 HTML,那应该没问题。
当然,如果您不必使用 href
中的任何内容来开始,只需在上面的代码中连接您的事件处理程序并且不要使用 new函数
。
关于javascript - 如何在 href javascript 函数中获取调用者元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525413/