Я стараюсь следовать рекомендациям https://developers.google.com/web/tools/lighthouse/audits/noopener и https://mathiasbynens.github.io/rel-noopener/ и пытаюсь установить значение для rel
to 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
будет иметь ожидаемого эффекта в случае в вопросе, то есть для окна/вкладки, которая открыта из ссылки без атрибута 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, и вы увидите его значение null.
Есть ли какое-либо значение при установке значения
rel
?
Нет, для случая в вопросе, кажется, что нет никакой ценности при установке noopener
, потому что он не собирается препятствовать noopener
нового окна/вкладки в window
документа, который его открыл.
window
возвращенного вwindow.open
а затем выполненияwindow.opener = null
?var otherWindow = window.open(); otherWindow.opener = null; otherWindow.location = url;
,