很不幸,我正在使用一些第三方JavaScript,它会在我的页面中插入链接。我想使用代理元素来代替直接使用这些链接,当点击代理元素时,会触发第三方链接的点击事件。
第三方链接将JavaScript打包到href属性中,就像这样:
<a id="horribleLink" href="javascript:doSomething()">Click me</a>
我的代理元素长这样:
<button rel="horribleLink" class="linkProxy">No, click me</button>
这里有一些使用jQuery编写的javascript代码,用于将它们连接在一起:
$('button.linkProxy').click(function(){
$('#' + $(this).attr('rel')).click();
});
如果第三方链接是一个标准链接 (<a id="horribleLink" href="http://www.google.com">Click</a>
) 或者稍微好一点的 onclick (<a href="#" id="horribleLink" onclick="doSomething()">Click</a>
),那么这个方法完全可行。但是当 JavaScript 在 href 属性中时,触发“click”将毫无作用。
有人能告诉我为什么吗?是否有合理的解决方法?
更新:正如 Millimetric 所说,根本原因似乎是浏览器防止在锚点上“伪造点击” - 我已经删除了我的“标准链接”示例,因为那是另一种不起作用的情况。然而,onclick 处理程序确实像你期望的那样工作。
onclick="doSomething()
应该是onclick="doSomething()"
。 - dugokontovhref="javascript:doSomething"
改为href="javascript:doSomething()"
吧? - gen_Eric