右键单击 link window.opener 为 NULL
window.opener is NULL with right click on link
我正在使用 javascript window.opener 属性 刷新子 window 中的父 window =].
父 window 只包含一个 table 数据和一个 link 给子 window,当子 window 打开然后执行父级中的 js 函数使用 window.opener 属性,父级中的 js 函数使用 ajax 刷新 table。
问题出在 window.opener 因为当用户打开 link 时为 NULL
使用右键单击(上下文菜单)。
示例:
parent.jsp
<html>
<head>
<script type="text/javascript">
function refreshTable() {
// ajax code to refresh the #theTable table, not important for this question
}
</script>
</head>
<body>
<a href="/folder/child.jsp" target="_blank">OpenChild</a>
<table id="theTable">
<tr>
<td>...</td>
</tr>
</table>
</body>
</html>
child.jsp
<html>
<head>
<script type="text/javascript">
$(document).ready( function() {
// opener is NULL when child is opened with right click
window.opener.refreshTable();
});
</script>
</head>
<body>
...
</body>
</html>
根据您的要求,您可以随时在 child.jsp
页面中设置 window.opener
:
window.opener="https://www.google.com/";
好的,我知道已经晚了,但我把它留在这里以备将来使用
添加
rel="opener"
到目标="_blank" link
<a href="/folder/child.jsp" target="_blank" rel="opener">OpenChild</a>
开启者将通过child页面
基于https://developer.mozilla.org/en-US/docs/Web/API/Window/opener
在以下情况下,浏览器不会填充 window.opener,而是将其保留为空:
可以通过在 link 上指定 rel=noopener 来省略开场白,或者
在 windowFeatures 参数中传递 noopener。
从 Firefox 79 开始,windows 由于 link 目标打开
_blank 没有开场白,除非使用 rel=opener 明确要求。
有一个 Cross-Origin-Opener-Policy header 的值为
same-origin 阻止设置开启者。由于加载了新的 window
在不同的浏览上下文中,它不会引用
开幕式 window.
旁注:顺便说一下,如果您通过右键单击或左键单击打开页面没有区别
我正在使用 javascript window.opener 属性 刷新子 window 中的父 window =].
父 window 只包含一个 table 数据和一个 link 给子 window,当子 window 打开然后执行父级中的 js 函数使用 window.opener 属性,父级中的 js 函数使用 ajax 刷新 table。
问题出在 window.opener 因为当用户打开 link 时为 NULL 使用右键单击(上下文菜单)。
示例:
parent.jsp
<html>
<head>
<script type="text/javascript">
function refreshTable() {
// ajax code to refresh the #theTable table, not important for this question
}
</script>
</head>
<body>
<a href="/folder/child.jsp" target="_blank">OpenChild</a>
<table id="theTable">
<tr>
<td>...</td>
</tr>
</table>
</body>
</html>
child.jsp
<html>
<head>
<script type="text/javascript">
$(document).ready( function() {
// opener is NULL when child is opened with right click
window.opener.refreshTable();
});
</script>
</head>
<body>
...
</body>
</html>
根据您的要求,您可以随时在 child.jsp
页面中设置 window.opener
:
window.opener="https://www.google.com/";
好的,我知道已经晚了,但我把它留在这里以备将来使用
添加
rel="opener"
到目标="_blank" link
<a href="/folder/child.jsp" target="_blank" rel="opener">OpenChild</a>
开启者将通过child页面
基于https://developer.mozilla.org/en-US/docs/Web/API/Window/opener
在以下情况下,浏览器不会填充 window.opener,而是将其保留为空:
可以通过在 link 上指定 rel=noopener 来省略开场白,或者 在 windowFeatures 参数中传递 noopener。
从 Firefox 79 开始,windows 由于 link 目标打开 _blank 没有开场白,除非使用 rel=opener 明确要求。
有一个 Cross-Origin-Opener-Policy header 的值为 same-origin 阻止设置开启者。由于加载了新的 window 在不同的浏览上下文中,它不会引用 开幕式 window.
旁注:顺便说一下,如果您通过右键单击或左键单击打开页面没有区别