为什么超链接未在新标签页中打开?

时间:2016-08-21 13:31:24

标签: javascript jquery html hyperlink

我有3个文件html: 的 force_hyperlink_open_in_new_window.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Force hyperlink open in new window</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

</head>
<body>
<a href="force_hyperlink_open_in_new_window_01.html">Foo</a>
<a href="force_hyperlink_open_in_new_window_02.html">Bar</a>

<script type="text/javascript">
    $('a[href^="http://"]')
            .not('[target="_blank"]')
            .attr('target', '_blank');
</script>

</body>
</html>

force_hyperlink_open_in_new_window_01.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>01</title>
    <style>
        body{
            background-color: tomato;
        }
    </style>
</head>
<body>
</body>
</html>

force_hyperlink_open_in_new_window_02.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>02</title>
    <style>
        body{
            background-color: limegreen;
        }
    </style>
</head>
<body>
</body>
</html>

为什么2个超链接不会在新标签中打开(我使用谷歌浏览器版本52.0.2743.116(64位))?

3 个答案:

答案 0 :(得分:2)

可能是因为hrefs不是以http://开头的。此外,您可以通过将此行放在头部强制打开新标签中的链接:

<base target="_blank" />

答案 1 :(得分:2)

您选择以http://开头的锚点,而您的链接是相对的,而不是以http://开头。

将JQuery选择器更改为常规锚:$('a'),如果目标尚未拥有,则会添加目标。见https://jsfiddle.net/k7ww81ee/

$('a')
        .not('[target="_blank"]')
        .attr('target', '_blank');

答案 2 :(得分:1)

你的href不匹配他们没有http。

变化:

$('a[href^="http://"]')

$('a')

grep所有链接。