如何使用链接调用 JavaScript?

IT技术 javascript
2021-01-14 12:19:05

如何使用链接调用 JavaScript 代码?

6个回答

不显眼的 JavaScript,没有库依赖:

<html>
<head>
    <script type="text/javascript">

        // Wait for the page to load first
        window.onload = function() {

          //Get a reference to the link on the page
          // with an id of "mylink"
          var a = document.getElementById("mylink");

          //Set code to run when the link is clicked
          // by assigning a function to "onclick"
          a.onclick = function() {

            // Your code here...

            //If you don't want the link to actually 
            // redirect the browser to another page,
            // "google.com" in our example here, then
            // return false at the end of this block.
            // Note that this also prevents event bubbling,
            // which is probably what we want here, but won't 
            // always be the case.
            return false;
          }
        }
    </script>
</head>
<body>
    <a id="mylink" href="http://www.google.com">linky</a>        
</body>
</html>
它不会重定向浏览器。即使您的 javascript 将替换该操作,您也应该将真实的 url 放在 href 中。这样,如果他们没有启用 javascript,您的链接仍然有效。
2021-03-21 12:19:05
那么href如果我不想重定向用户而只想运行一些代码,我怎么做呢?编辑:我看到它可以留空:href=""
2021-03-22 12:19:05
为什么最好onclick通过来添加事件window.onload,而不是onclick直接将 放在<a>标签中?
2021-04-01 12:19:05
如果您担心的一个问题是您不想将功能工作单元分离到源文件中的不同物理位置,或者分布在许多源文件中,该怎么办。如果您在 a href 标签中放置了一个 javascript 调用,通过查看一行代码就可以清楚地看到正在发生的事情。我会担心将该功能分离到不同的物理位置,在那里很难了解正在发生的事情。也许这只是我的风格。
2021-04-04 12:19:05
您能解释一下为什么这比当前接受的答案更好,以及脚本应该放在页面中的哪个位置(因为这显然是一个初学者级别的问题)?
2021-04-05 12:19:05
<a onclick="jsfunction()" href="#">

或者

<a onclick="jsfunction()" href="javascript:void(0);">

编辑:

上面的回答真的不是一个好的解决方案,自从我最初发布以来,已经学到了很多关于JS的知识。有关解决此问题的更好方法,请参阅下面的EndangeredMassa 的回答

一个都不用!链接用于链接,它们不是调用 javascript 的虚拟元素。
2021-03-22 12:19:05
我推荐第二个,因为第一个将您滚动到页面顶部。
2021-03-23 12:19:05
是的,它肯定会,除非你添加一个“返回假;” 在你的功能之后。
2021-04-02 12:19:05
这是 1998 年的代码。使用其中一种不显眼的解决方案。请。
2021-04-11 12:19:05
如果您打算将 javascript 内联,请这样做:<a onclick="jsfunction;return false" href="linkasnormal">
2021-04-11 12:19:05
<a href="javascript:alert('Hello!');">Clicky</a>

多年后编辑:不!永远不要这样做!我当时年少无知!

再次编辑:有几个人问为什么不应该这样做。有几个原因:

  1. 展示: HTML 应该专注于展示。将 JS 放入 HREF 意味着您的 HTML 现在有点处理业务逻辑。

  2. 安全性:像这样的 HTML 中的 Javascript 违反了内容安全策略 (CSP)内容安全策略 (CSP) 是一个附加的安全层,有助于检测和缓解某些类型的攻击,包括跨站点脚本 (XSS) 和数据注入攻击。这些攻击用于从数据窃取到站点篡改或恶意软件分发的方方面面。在这里阅读更多

  3. 可访问性:锚标签用于链接到其他文档/页面/资源。如果您的链接无处可去,则它应该是一个按钮这使得屏幕阅读器、盲文终端等更容易确定正在发生的事情,并为视障用户提供有用的信息。

我也无法理解编辑的原因。1) 每个属性(如所有 data-* 属性)都是为在 html 中使用高级逻辑而制作的,所以这是正常的,完全没有问题 2)您可以通过控制台更改任何站点上的任何 js。只要您不将合理的数据发布到该字段中,它就不会比任何其他函数调用更危险。3) 如果你不需要支持屏幕阅读器、盲文终端等,没关系。
2021-03-25 12:19:05
也许对这种方法的问题进行了一些描述?这比href='#'and alert()in更糟onclick吗?
2021-04-07 12:19:05
嗨,我也不确定为什么不使用它?我被困在需要调用 JS 函数的场景中,但我只能指定一个链接。你的解决方案奏效了。
2021-04-12 12:19:05
我是 javascript 新手,不明白这有什么问题.. 任何解释都会很好
2021-04-13 12:19:05

而且,为什么不使用 jQuery 不显眼:

  $(function() {
    $("#unobtrusive").click(function(e) {
      e.preventDefault(); // if desired...
      // other methods to call...
    });
  });

HTML

<a id="unobtrusive" href="http://jquery.com">jquery</a>
这是否适用于 SEO,以便爬虫可以找到链接并跟踪它?
2021-03-21 12:19:05
因为不是每个人都使用 jquery。
2021-03-27 12:19:05
@GregMiernicki 是和否取决于您所说的链接是什么意思。看看 HTML。网络爬虫或任何关闭 javascript 的客户端将访问给定的 HREF。启用 Javascript 的客户端将运行单击操作,然后如果该函数未返回错误值或调用 preventDefault,则点击链接。在这种情况下,href 是一个后备,因此它被称为“不显眼”
2021-04-01 12:19:05

Unobtrusive Javascript 有很多优点,这里是它需要的步骤以及为什么它很好用。

  1. 链接正常加载:

    <a id="DaLink" href="http://host/toAnewPage.html">点击这里</a>

这很重要,因为它适用于未启用 javascript 的浏览器,或者如果 javascript 代码中存在不起作用的错误。

  1. javascript 在页面加载时运行:

     window.onload = function(){
            document.getElementById("DaLink").onclick = function(){
                   if(funcitonToCall()){
                       // most important step in this whole process
                       return false;
                   }
            }
     }
    
  2. 如果 javascript 运行成功,可能使用 javascript 加载当前页面中的内容,返回 false 将取消链接触发。换句话说,如果 javascript 成功运行,则将 return false 设置为禁用链接。在允许它在 javascript 不运行的情况下运行的同时,进行一个很好的备份,以便您的内容以任何一种方式显示,对于搜索引擎,如果您的代码中断,或者在非 javascript 系统上查看。

关于这个主题的最好的书是 Jeremy Keith 的“Dom Scription”