Invoking the HREF attribute of a link with javascript using javascript!
我以前从未见过这种情况,但是如果 HREF 包含 javascript,您可以使用 javascript 调用链接的 HREF 属性:;//code......;
在我下面的示例中,单击两个链接。即使他们在 HREF.
中有不同的 javascript,他们也会做同样的事情
例如:
1 2 3 4 5 6 7 8 9 10 | <script type="text/javascript"> function clickme() { var link = document.getElementById("clickme"); eval(link.href); } I will alert hello <br /> click me |
我在 IE8、Firefox 3.6.8、Safari 5.0.1 和 Chrome 6.0.472.55 上对此进行了测试。这是标准化的吗,所以我以后不用担心这个功能会被弃用?
您不必担心它将来会被弃用。现在这是个坏主意。
真正发生的事情是:有一个使用
当您检索链接的 href 时,您会收到一个字符串,例如"javascript:clickme()"。您可以在字符串上使用
所以它有效,但这是个坏主意。在最新版本的 JavaScript,ECMAScript 第 5 版的新"严格"模式中,它也被禁止(因为
一般来说,当我们认为需要将
它不会被弃用,但我看不到它的用途。
如果您确实想简化此操作,请执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <script type="text/javascript"> function clickme() { clicked(); } function clicked() { alert("hello"); } I will alert hello <br /> click me |
或者更好:
1 | Click Me |
甚至更好:
1 | <span onclick="clicked();" class="MakeMeLookLIkeLInk">Click Me |
锚点控件主要用于导航,保持这种方式是一种很好的做法。如果您有需要执行的功能,请使用带有 onclick 的 span/div。您也可以使用按钮。
我认为你的问题是
1 | eval(link.href); |
有效。
答案是肯定的,是的。您没有理由不能评估存储在某些属性中的代码,就像评估输入框的内容一样。
也就是说,这看起来是一种非常糟糕的编码方式。如果你不小心,你可能会陷入一个循环。此外,这样的代码将很难维护。