我想知道除了评估它之外是否有更好的方法来执行链接的href属性?
例如:
eval($("a[href^=javascript:]").attr("href").replace(/^javascript:/,"")); // better (more eficient) way to do this?
谢谢!
答案 0 :(得分:2)
如果您正在讨论href="javascript:window.open('blah')"
样式链接中嵌入的任意JS代码,那么不是真的。
你应该澄清一下这个问题 - 锚点标签上的hrefs
实际上是指向其他文档的链接,你不运行它们,你导航到< / em>他们。您在问题中真正提出的问题是如何执行作为字符串提供的任意javascript代码,这样更准确并使答案更清晰。 (如果您尝试eval
标准URL href属性,则不会发生任何有趣的事情。)
如果您的意思是“我如何获得与点击此链接时相同的行为”,那么这非常复杂。没有特定的方法可以做到这一点,因此您必须尝试通过读取链接的属性并在Javascript中合成等效操作来模拟效果。例如,如果您忘记检查target
属性,这将无法正常工作,我相信还有很多其他陷阱。
答案 1 :(得分:2)
Javascript也应该在url栏中执行,与bookmarklet不同。尝试将其设置为window.location而不删除“javascript:”
window.location = el.attr("href");
答案 2 :(得分:0)
如果您尝试在a
代码上执行Javascript,最好首先在onclick
代码上使用a
属性。这样你就可以$("a#whatever-link").click();
得到相同的结果。