如何使 html <a target='_parent'> 指向与 javascript window.opener 相同的值?
how to make html <a target='_parent'> point to the same as javascript window.opener?
在我的项目中,我有一个主页,用户可以在其中登录并查看主表,还有许多其他页面,这些页面以不同的方式打开 windows。
当登录超时时,用户应该无法访问任何内容。在主页面中,我再次给登录页面一个link。在sub-windows中我不能那样做,因为我不想在sub-window.
中完成登录
在javascript中,我可以使用window.opener访问主window(因为每个子window都是用window.open打开的) .我怎样才能在 html a
标签内做到这一点?
if (!login_check($conn)) { // tests if the user is connected
// exits with a message, if not connected anymore
exit("<p>You don't have authorization to access this page. Please, <a href='index.php' target='_parent'>go back to main screen and login</a>.</p>");
}
问题是:此代码在子 window 上打开登录页面,因此 target='_parent'
并不像我想的那样。实现此目标的正确方法是什么?
你不能。
target
仅允许您在当前 window/tab 中的帧之间导航。
只有 JavaScript 可以访问开启器。我没有测试以下内容,但它应该能为您指明正确的方向。
document.querySelector('.login-expired a').addEventListener('click', open_in_opener);
function open_in_opener(event) {
window.opener.location = this.href;
event.preventDefault();
}
<p class="login-expired">You don't have authorization to access this page. Please, <a href='index.php'>go back to main screen and login</a>.</p>
目标适用于框架和 iframe。你需要像这样处理javascript
<a href="#" onclick="window.opener.location.href = 'index.php'; return false;">
祝你好运
如果您为原始 window 分配 window.name
属性 一些值(例如 "master"
),那么您可以简单地通过 <a target="master">
.
这是 dataURI 格式的简单概念验证:复制并粘贴到您的地址栏,仅 Chrome/Firefox;很难在这里模拟任何其他方式:
data:text/html,<script>window.name="master";</script>I am master. <button onclick="window.open('data:text/html,<a target=\'master\' href=\'data:text/plain,content for master from slave\'>Replace content of master</a>')">Open slave</button>
甚至可以从奴隶内部设置主人(开启者)name
,但前提是两者具有相同的来源:
<a onclick='if(window.opener)window.opener.name=this.target=Math.random()' href='whatever'>Open whatever in opener, if any</a>
在我的项目中,我有一个主页,用户可以在其中登录并查看主表,还有许多其他页面,这些页面以不同的方式打开 windows。
当登录超时时,用户应该无法访问任何内容。在主页面中,我再次给登录页面一个link。在sub-windows中我不能那样做,因为我不想在sub-window.
中完成登录在javascript中,我可以使用window.opener访问主window(因为每个子window都是用window.open打开的) .我怎样才能在 html a
标签内做到这一点?
if (!login_check($conn)) { // tests if the user is connected
// exits with a message, if not connected anymore
exit("<p>You don't have authorization to access this page. Please, <a href='index.php' target='_parent'>go back to main screen and login</a>.</p>");
}
问题是:此代码在子 window 上打开登录页面,因此 target='_parent'
并不像我想的那样。实现此目标的正确方法是什么?
你不能。
target
仅允许您在当前 window/tab 中的帧之间导航。
只有 JavaScript 可以访问开启器。我没有测试以下内容,但它应该能为您指明正确的方向。
document.querySelector('.login-expired a').addEventListener('click', open_in_opener);
function open_in_opener(event) {
window.opener.location = this.href;
event.preventDefault();
}
<p class="login-expired">You don't have authorization to access this page. Please, <a href='index.php'>go back to main screen and login</a>.</p>
目标适用于框架和 iframe。你需要像这样处理javascript
<a href="#" onclick="window.opener.location.href = 'index.php'; return false;">
祝你好运
如果您为原始 window 分配 window.name
属性 一些值(例如 "master"
),那么您可以简单地通过 <a target="master">
.
这是 dataURI 格式的简单概念验证:复制并粘贴到您的地址栏,仅 Chrome/Firefox;很难在这里模拟任何其他方式:
data:text/html,<script>window.name="master";</script>I am master. <button onclick="window.open('data:text/html,<a target=\'master\' href=\'data:text/plain,content for master from slave\'>Replace content of master</a>')">Open slave</button>
甚至可以从奴隶内部设置主人(开启者)name
,但前提是两者具有相同的来源:
<a onclick='if(window.opener)window.opener.name=this.target=Math.random()' href='whatever'>Open whatever in opener, if any</a>