【问题标题】:Calling html href or JavaScript opening a new window: Solution调用 html href 或 JavaScript 打开新窗口:解决方案
【发布时间】:2014-03-12 16:05:39
【问题描述】:

我在许多表单上看到了许多关于将超链接传递给 JavaScript 并且只执行一个或另一个的问题。没有既可重用又紧凑的完整解决方案。我下面的答案包含解决方案。

【问题讨论】:

  • 除了在你的 html 中使用 onclick= 通常是一种非常糟糕的做法
  • 同意,但尝试使用最少的 JavaScript
  • 是的,如果这就是目标,那么这很好......我讨厌这样的内联样式和内联函数,因为很难弄清楚发生了什么以及发生在哪里。好帖子虽然
  • @CMJ 可以选择在 SO 中回答您的问题。您可能想从问题中删除解决方案并将其作为答案发布。问答,这就是 SO 的工作原理..
  • 顺便问一下,if(window.open(href)) {return false;} else {return false;} 在这两种情况下都返回 false 吗?!

标签: javascript html reusability


【解决方案1】:

是的,我两次都返回 false 以确保如果启用了 JavaScript 并调用了该函数,则不会触发 html href。目标是保持当前页面不变,并在新选项卡中调用请求的链接。它的设计方式是可以通过任何传递一个 href 的调用来重用。这样就不会循环通过 id 或标签名称。这也使代码保持小而紧凑。

解决办法如下:

 <a onclick="return init(this.href)" href="http://..." >Something</a>

    <script>
   function init(href){
    if(window.open(href))
          {return false;}
    else {return false;}    
     }
    </script>

onclick 会将 href 传递给 init(),如果为 true,则 html 中的 return 将调用该函数,并且 href 都会触发。这将导致新选项卡和当前选项卡显示相同的内容。那不是我们想要的。该功能会将链接打开到新选项卡。无论什么强制 html href 不执行,它都会返回 false。因此,当前选项卡将保持不变,新选项卡将显示调用的链接。如果用户脚本被禁用,则只有 html 会触发在当前选项卡中显示链接。

这是与浏览器兼容的,并且可以通过任何链接完全重复使用。

我找不到任何可以实现这一点的文档,所以我决定发布一个不需要 id 或 tagName 的解决方案。

希望这对那些正在寻找类似解决方案的答案的人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2019-10-20
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多