html 是否有办法在新窗口中打开页面上的所有链接?

gcxthw6b  于 2022-12-09  发布在  其他
关注(0)|答案(6)|浏览(326)

我有一堆<a href=".html">链接,想让它们都在新窗口中打开。
我知道我可以做一个搜索和替换所有添加target="_blank"到我所有的<a href="...">链接。
但是,有没有一种快速的方法,比如设置CSS样式,或者添加一些JavaScript代码,来完成同样的事情?

ve7v8dk2

ve7v8dk21#

如果你有一个只包含链接的页面,可以考虑<base target="_blank">,它会在一个新窗口中打开每个链接(但也包括表单的目标,除非被<form target="_self">覆盖。
正如其他人所展示的那样,在不修改HTML源代码的情况下,可以使用Javascript将iterate through all <a> tags and add the target attribute转换为event listener that sets the target attribute dynamically或添加一个event listener that sets the target attribute dynamically

laik7k3q

laik7k3q2#

如果您有jQuery,这很简单

$("a").attr("target", "_blank");

或常规Javascript

var links = document.links;
for (var i = 0; i < links.length; i++) {
     links[i].target = "_blank";
}

根据@Lekensteyn的建议,不带Javascript(为完整性而添加)

<base target="_blank">.
vhipe2zx

vhipe2zx3#

CSS:没有。
JavaScript:委托一个click事件,该事件在单击链接时添加一个target="_blank"属性。

document.body.addEventListener(function(e) {
    if (e.target.nodeName.toUpperCase() === 'A' && e.target.href) {
        e.target.target = '_blank';
    }
}, true);

注意:如果<a>元素包含其他元素,则可能需要遍历树以确定是否单击了锚元素:

document.body.addEventListener(function(e) {
    var target = e.target;
    do {
        if (target.nodeName.toUpperCase() === 'A' && target.href) {
            target.target = '_blank';
            break;
        }
    } while (target = target.parentElement);
}, true);

或者,如果您是jQuery爱好者:

$('body').on('click', 'a', function(e) {
    e.target.target = '_blank';
});
2skhul33

2skhul334#

是,你可以用JS把属性添加到HTML文档中所有的链接,文档名为“target”,值为“_blank”;)
也可以使用this打开url到javascript:openInWindow(url)所有链接的replace href,在JS中编写函数打开新窗口,并将其位置设置为url;)谷歌会帮你做到这两点。

nwsw7zdq

nwsw7zdq5#

只需使用Javascript向页面添加一个html base元素:

var e = document.createElement("base");
e.target = "_blank";
document.head.appendChild(e);
rhfm7lfc

rhfm7lfc6#

我使用纯JavaScript创建了一个脚本,使所有链接在一个新窗口中打开。

<script  type="text/javascript">
    var all_links = document.querySelectorAll("a");

    for (let index in all_links) {
        try {
            all_links[index].setAttribute("target", "_blank");
        }
        catch (error) {
            //console.log(error);
        }
    }
</script>

相关问题