【问题标题】:How to open external links in another tab? [duplicate]如何在另一个选项卡中打开外部链接? [复制]
【发布时间】:2017-07-18 02:25:13
【问题描述】:

我使用以下代码,所以一切都在网络应用程序中打开:

<script type="text/javascript">
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++)
{
   a[i].onclick=function()
   {
       window.location=this.getAttribute("href");
       return false
   }
}

但是,即使在桌面上,具有target="_blank" 的链接仍会在同一选项卡中打开。如何使所有外部链接在新选项卡中打开,同时仍将所有内部链接保留在同一选项卡中。我找到了单个链接的解决方案,但我有太多无法手动更改。

注意:我使用的是 apache,所以更改配置文件也可以。

【问题讨论】:

标签: javascript wordpress


【解决方案1】:

如果您在链接上设置“目标”属性,它们将在新选项卡中打开:

<script>
var origin=window.location.origin;
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++)
{
   var link = a[i];
   if(link.href && link.href.indexOf(origin)!=0)
    link.setAttribute("target", "_blank");
}
</script>

在 WordPress 管理员中,您可以转到主题编辑器并将此代码放在您的页脚中。

【讨论】:

  • 抱歉,我是 javascript 新手,如何将其添加到现有代码中。
  • 您可以使用主题编辑器通过管理员将其添加到您的页脚。如果您的主题有放置自定义跟踪代码的位置,您可以将其添加到那里。
  • 它不起作用。我的问题是即使带有目标属性的链接也不会在新选项卡中打开。
【解决方案2】:

我设法从this post 找到了答案。 我只是把它放在我的标题中:

<script>
// Mobile Safari in standalone mode
if(("standalone" in window.navigator) && window.navigator.standalone){

    // If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true
    var noddy, remotes = false;

    document.addEventListener('click', function(event) {

        noddy = event.target;

        // Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML
        while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
            noddy = noddy.parentNode;
        }

        if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
        {
            event.preventDefault();
            document.location.href = noddy.href;
        }

    },false);
}
</script>

所有普通链接都在网络应用程序中打开,但在移动设备和桌面设备上,target="_blank" 的链接会在新标签页中打开。

【讨论】:

  • 你没有提到这只是移动 safari 的问题。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2013-01-12
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2017-07-09
相关资源
最近更新 更多