javascript - 如何在 href javascript 函数中获取调用者元素?

标签 javascript jquery html anchor href

我在 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:;";
}

Live Copy | Live Source

这相当顽皮,因为它使用了 Function 构造函数(非常像 eval),但是如果您相信来源的 HTML,那应该没问题。

当然,如果您不必使用 href 中的任何内容来开始,只需在上面的代码中连接您的事件处理程序并且不要使用 new函数

关于javascript - 如何在 href javascript 函数中获取调用者元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21525413/

相关文章:

html - 当网络字体加载缓慢时恢复为无样式文本?

javascript - Javascript插件读取条形码

javascript - 两个类之间的状态

javascript - HTML 有没有办法将日期输入中的年份限制为 4 位数字

css - 如何阻止内容流入正确的 div

javascript - 用c语言创建登录功能cgi-html。(无PHP,Apache)

javascript - 将输入转换为使用 jquery 链接回

javascript - Angular JS 路由 : attach more than one controller

jquery表单序列化空字符串

javascript - 当指定文本位于页面上时,Jquery 用户脚本单击单选按钮