要让页面内的所有 标签在点击时在新窗口中打开,可以通过设置
使用 base 元素:
<base target="_blank">
将这行代码放置在
元素中。这会告诉浏览器,页面中所有没有指定目标 (target) 属性的链接都会在新窗口或新标签页中打开。这是最简便的方法,适合全局设置。单独设置 标签:
如果你需要对某些特定的 标签设置在新窗口打开,可以在每个链接中添加 target="_blank" 属性:
<a href="https://example.com" target="_blank">Link</a>
这样设置的 标签会覆盖全局设置,只有这些链接会在新窗口中打开。
JavaScript 方式:
如果需要更精细的控制,可以使用 JavaScript 在页面加载时为 标签动态添加 target="_blank" 属性。例如,使用 jQuery 的方式:
$(document).ready(function() {
$('a').attr('target', '_blank');
});
或者原生 JavaScript:
window.onload = function() {
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].setAttribute('target', '_blank');
}
}
这些方法可以根据需要灵活地选择全局设置或特定标签设置。
另外一篇文章讲了这个代码副作用的解决,copy过来,这样就不用跑到我另外一篇文章看了!
你可以理解为这是声明只要没定义的,就全部默认新窗口打开,但是有些a标签会因为javascript而受到影响,导致原本的失效,那么可以用下面这个js在尽量避免网页性能消耗的情况下恢复功能,鱼和熊掌兼得
本来打算每秒钟检查一次所有 标签,单子这样对界面的性能影响,且取决于几个因素,包括页面上链接的数量、页面复杂性以及浏览器的优化程度。以下是一些可能的性能影响和建议:
可能的性能影响
DOM 操作开销: 每秒钟遍历和检查所有的 标签会对性能产生一定开销,尤其是当页面包含大量链接时。
内存和 CPU 使用: 高频率的 DOM 操作可能会增加内存和 CPU 的使用,这可能导致浏览器在低性能设备上表现不佳。
页面响应时间: 在高频率的操作中,可能会导致页面的响应时间略微增加,尤其是在较旧或低配置的设备上。
性能优化建议
降低检查频率: 如果每秒钟检查一次对性能有影响,可以考虑将检查频率降低到更长的时间间隔,例如每 5 秒或每 10 秒。
优化选择器: 如果可能,减少不必要的 DOM 查询。比如,如果你知道某些部分的链接不会改变,可以只检查这些部分。
条件触发: 如果你能确定何时会有新的 标签被动态添加,可以只在这些动态操作时进行更新,而不是定时检查所有标签。
使用 MutationObserver: 如果页面上 标签是动态生成的,考虑使用 MutationObserver 监听 DOM 变化,只有在发生变化时才进行操作。
示例优化代码
以下是一个使用 MutationObserver 的优化版本,它只在 DOM 变化时进行更新:
<script>
function updateLinks() {
var links = document.querySelectorAll('a[href^="javascript:"]');
links.forEach(function(link) {
link.setAttribute('target', '_self');
});
}
// 初始检查
updateLinks();
// 使用 MutationObserver 监听 DOM 变化
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (mutation.type === 'childList') {
updateLinks(); // 处理新增的 <a> 标签
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
</script>