【问题标题】:Target _blank in all Link所有链接中的目标 _blank
【发布时间】:2023-03-17 03:02:01
【问题描述】:

我刚刚制作了一个目标为_self的html页面

但现在我的链接太多了,我想将所有链接目标更改为_blank,这对我来说很难做到。是否有任何适用于所有人的 javascript 只写 1 次??

因为我的代码太长了,而且所有的链接都需要太多的时间来改变。有什么诀窍吗?

喜欢这个

<a href="http://www.google.com"></a>
<a href="http://www.facebook.com"></a>
<a href="http://www.gmail.com"></a>
<a href="http://www.twitter.com"></a>
<a href="http://www.stackoverflow.com"></a>
<a href="http://plus.google.com"></a>

【问题讨论】:

  • 你用什么程序来写你的html?显而易见的方法是查找和替换...
  • 愚蠢的问题没问题。我会用更好的编辑器来处理这种情况,比如 Sublime Text。在 Sublime Text 中,您可以: 1. 搜索“href” 2. 单击“Find all”,选择所有“href”结果。 3.在“href”之前写下你的“目标”
  • noo 我不想替换是否有任何 javascipt 可以在空白中打开所有链接?
  • 顺便说一句,您示例中的链接 URL 不正确...它们应该以 http:// 开头
  • 你不应该尝试使用 javascript 作为查找和替换的替代品。

标签: javascript hyperlink target


【解决方案1】:

把这个放在你的&lt;head&gt;:

<base target="_blank">

它将使页面上的所有 URL 在新页面中打开,除非指定了 target

这是 HTML5 独有的功能,我从 Google's io-2012-slides slide package 学到的。

【讨论】:

  • 我不知道,你为什么不试试?它不会更新呈现的 HTML 代码,但是...
  • 您使用的是 HTML5 吗?由于&lt;head&gt; 已经在页面加载时执行,它也可能不会被执行。只需将代码放入页面的&lt;head&gt;,您就不必再更改 URL 上的target
  • 仅供参考,默认行为是target="_self"
【解决方案2】:

为了回答你的问题,jQuery 让这一切变得简单:

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<script>
    $(function() {
        $('a[href]').attr('target', '_blank');
    });
</script>

这不会修改任何没有href 属性的&lt;a&gt; 标记。

【讨论】:

  • @Hammad 它应该可以工作...试试这个例子:jsfiddle.net/spryno724/Hh4S6 您可能没有加载 jQuery,或者在更改 target 属性之前没有等待您的文档加载。跨度>
【解决方案3】:

在纯 JS 中也很简单:

var links = document.getElementsByTagName('a');
for (var i=0, len=links.length; i < len; i++) {
  links[i].target = '_blank';
}

(将此脚本放在关闭 &lt;/body&gt; 标记之前,或者无论如何都放在页面上所有 &lt;a&gt; 标记之后。)

【讨论】:

    【解决方案4】:

    如果你不能用你的 HTML 编辑器做一个简单的find and replace,你可以用 jQuery 做这样的事情:

    $('a').click(function() {
      $(this).attr('target', '_blank');
    });
    

    这将自动为每个被单击的a 执行target="_blank",并在新窗口或新选项卡中打开(您无法控制,这取决于用户的浏览器设置)。

    FIDDLE

    希望这会有所帮助!

    【讨论】:

    • 添加jquery 2.1.0重要吗?
    • 可能是因为您没有将脚本放在页面底部(在结束 &lt;/body&gt; 标记之前),或者放在 $(document).ready() 回调中。
    • 请注意,jQuery 2.x 分支不支持 IE 8 及以下版本。
    • 另请注意,与此处的其他答案不同,此答案在有人实际单击链接之前不会更改目标,因此它应该出现在您可能设置的任何其他 JS 代码之前 @987654328 @ 链接上的事件(除非其他 JS 链接 [如果有的话] 不需要在新窗口/标签中实际打开)。
    • @Hammad 没必要,任何最新版本的 jQuery 都可以使用。但是需要一个 jQuery 包含。虽然 2.X 在 IE8 下可能无法运行,但对其他浏览器来说还是不错的。该代码是 jQuery 代码,您需要将其放入 $(document).ready(function(){ //...code here..});script 标记中。
    【解决方案5】:

    我不得不处理这个很多次。仅作记录:

    我认为没有必要让 javascript 执行此任务,但这是另一种方法,您可以使用编辑器的查找/替换功能并执行类似的操作(前提是您的链接采用该格式):

    • 打开您的编辑器并查找&lt;a href

    • 在替换字段上输入&lt;atarget="_blank"href

    • 替换。

    或者您可以通过查找.com"&gt; 并将其替换为.com" target="_blank"&gt; 将其附加到标签的末尾。您可以在具有查找/替换功能的所有编辑器上执行此操作。这只是寻找模式以及如何替换它们的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多