代码之家  ›  专栏  ›  技术社区  ›  Alex

有没有更好(更有效)的方法来运行一个href?

  •  1
  • Alex  · 技术社区  · 14 年前

    我想知道是否有更好的方法来执行链接的href属性而不是回避它?

    例如:

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

    谢谢!!

    3 回复  |  直到 14 年前
        1
  •  2
  •   Andrzej Doyle    14 年前

    如果你说的是嵌入在 href="javascript:window.open('blah')" 样式链接,然后不是真的。

    不过,你应该澄清这个问题- hrefs 锚定标签实际上是指向其他文档的链接,而不是 运行 他们,你 导航到 他们。在您的问题中,您真正要问的是如何执行以字符串形式提供的任意JavaScript代码,这不仅更准确,而且使答案更清楚。(如果你尝试 eval 一个标准的url-href属性,不会发生任何有趣的事情。)

    如果你的意思是“如果我点击这个链接,我怎么会得到同样的行为”,那就相当复杂了。没有具体的方法可以做到这一点,因此您必须尝试通过读取链接的属性并在javascript中合成等效的操作来模拟效果。如果你忘了检查 target 例如,属性的作用就不一样了,我相信还有很多其他的陷阱。

        2
  •  2
  •   Nick    14 年前

    JavaScript也应该在URL栏中执行,这与书签没什么不同。尝试将其设置为window.location而不删除“javascript:”

    window.location = el.attr("href");
    
        3
  •  0
  •   Michael Louis Thaler    14 年前

    如果您尝试在 a 标签,最好使用 onclick 属性 首先标记。这样你就可以了 $("a#whatever-link").click(); 得到同样的结果。