为动态设置 noopener url

Setting noopener for dynamic url

我正在尝试遵循 https://developers.google.com/web/tools/lighthouse/audits/noopener and 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值还有什么价值吗?

它不起作用:noopener 属性在问题的情况下不会产生预期的效果——也就是说,对于从 [=28= 打开的 window/tab ] 没有 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 中,如果您检查打开的新 tab/window 的 window.opener,您会发现它是非空的。但是检查案例 2 中的新 window/tab,您会看到它是空的。

Is there still any value on setting rel value ?

否——对于问题中的情况,设置 noopener 似乎没有任何价值,因为它不会阻止新的 window/tab 访问 window打开它的文档。