我有一个包含所有外部链接的target =“ _ blank”的JS。出于安全原因,我还需要附加rel =“ noopener”。
对实现这个目标有帮助吗?
我的脚本:
(function($) {
jQuery(document).ready(function() {
add_target_blank_to_external_links();
});
function add_target_blank_to_external_links() {
$('a[href^="http://"], a[href^="https://"]').not('a[href*="' + location.hostname + '"]').attr('target', '_blank');
}
})(jQuery);
答案 0 :(得分:0)
因此,您的最终解决方案如下。
使用rel="noopener"
是非常好的做法,因为它可以防止新页面返回以控制初始页面。您也可以像rel="noreferrer"
(function($) {
jQuery(document).ready(function() {
add_target_blank_to_external_links();
});
function add_target_blank_to_external_links() {
$('a[href^="http"]').not('a[href*="' + location.hostname + '"]').attr({target: "_blank", rel: "noopener"});
}
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="">Demo link</a>
答案 1 :(得分:0)
对上面 labu4bd 的回答的一个小改进(非常有用,谢谢!)是将初始过滤器更改为仅修改正文中的链接,因此它们不会添加到头部的样式和脚本链接中。
例如:
(function($) {
jQuery(document).ready(function() {
add_target_blank_to_external_links();
});
function add_target_blank_to_external_links() {
$('body a[href^="http"]').not('a[href*="' + location.hostname + '"]').attr({target: "_blank", rel: "noopener"});
}
})(jQuery);