是否有更好(更有效)的方式来运行href?

时间:2010-07-09 16:50:34

标签: javascript jquery href

我想知道除了评估它之外是否有更好的方法来执行链接的href属性?

例如:

eval($("a[href^=javascript:]").attr("href").replace(/^javascript:/,"")); // better (more eficient) way to do this?

谢谢!

3 个答案:

答案 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();得到相同的结果。