我正在尝试遵循https://developers.google.com/web/tools/lighthouse/audits/noopener和https://mathiasbynens.github.io/rel-noopener/的建议,并尝试将rel
的值设置为noreferrer noopener
。问题是我无法设置href
值,因为它是动态的。我需要对我的内部端点进行Api调用以获取url。因此,我想知道以下是否仍然有效
<a ng-click="getUrl()" rel="noreferrer noopener">
<i class="action icon view"></i>
</a>
var getUrl = function() {
// call some endpoint, on success
$window.open(url, '_blank');
}
设置rel
值还有什么价值吗?
答案 0 :(得分:1)
它不起作用:noopener
属性在问题的情况下不具有预期的效果 - 也就是说,对于没有href
的链接打开的窗口/选项卡属性。简单测试:
<!doctype html>
<title>simple noopener test</title>
<a onclick = "getUrl()"
rel = "noreferrer noopener">Case 1: click here to open a new tab that <b>will</b>
have access to the window object of this document (despite the'noopener')</a>
<p>
<a href="http://example.com"
rel = "noreferrer noopener">Case 2: click here to open a new tab that <b>will not</b>
have access to the window object of this document (because of the'noopener'</a>
<script>
var getUrl = function() {
window.open("http://example.com", '_blank');
}
</script>
在该示例的案例1中,如果您检查打开的新选项卡/窗口的window.opener
,您将看到它是非空的。但请检查案例2中的新窗口/选项卡,您将看到它为空。
设置
rel
值还有什么价值吗?
否 - 对于问题中的情况,似乎设置noopener
没有任何价值,因为它不会阻止新窗口/选项卡访问打开的文档的window
它