我正在努力遵循https://developers.google.com/web/tools/lighthouse/audits/noopener和https://mathiasbynens.github.io/rel-noopener/并且正在尝试将CCD_ 1的值设置为CCD_。问题是我不能设置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
值是否还有任何值?
它不起作用: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
,您会发现它不是null。但是检查案例2中的新窗口/选项卡,就会发现它为空。
设置
rel
值是否还有任何值?
否——对于问题中的情况,设置noopener
似乎没有任何价值,因为它不会阻止新窗口/选项卡访问打开它的文档的rel
0。