怎样阻止被别的窗口重定向?即禁用window.opener.oepn, window.opener.location等

skyxie 2010-10-29 12:55:29

比如,我有一个页面a.html

<html>
<title>I want to prevent being redirected</title>
<body>
<a href="b.html" target="_blank">open window b</a>
</body>
<html>

当点击上面的链接后,打开b.html

<html>
<title>I will redirect opener</title>
<script language="JavaScript">
function redirect()
{
window.opener.open("http://www.163.com", '_self');
}
</script>
<body onload="redirect()">
I will redirect opener to www.163.com
</body>
<html>

b.html会调用window.opener.open 或 也可通过window.opener.location来把a.html重定向到别的网站。

【问题来了】 请问在a.html有没有什么办法进行限制,使得b.html中的window.opener.open无效?


...全文
466 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
friendly_ 2010-10-30
  • 打赏
  • 举报
回复
window.open('Untitled-1.html').opener.open = function(){alert('cannot redirect');};
  • 打赏
  • 举报
回复
去试试重载window.opener.open()吧,把它屏了.
skyxie 2010-10-29
  • 打赏
  • 举报
回复
to楼上的各位,
感谢各位的回复。
不好意思,今天比较忙,没有来得及回复哈~
本人js比较菜哈,但是又想出两道笔试题 ^_^

第二个问题来了,在a.html中,不修改window.open('Untitled-1.html').opener=null;的前提下

即确保b.html中的window.opener是一个window对象的前提下,能否在a.html中设置,使得b.html中的
window.opener.open方法无效。 但是window.opener.status="xxxx"有效
ziyouren521125 2010-10-29
  • 打赏
  • 举报
回复
不定向应该是不传值
<a href="b.html" target="_blank">open window b</a>
ziyouren521125 2010-10-29
  • 打赏
  • 举报
回复
我有个想法,就是通过url传值得方式进行控制。
仅供参考,没测试

a页面
要是想定向
<a href="b.html?state=1" target="_blank">open window b</a>
不定向
<a href="b.html?state=1" target="_blank">open window b</a>


function redirect()
{
var state=location.href.split('=');
if(state[1]==1)
{
window.opener.open("http://www.163.com", '_self');
}
else
{
return false;
}
}

Mr-Jee 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 crazywa 的回复:]

又抬头一看,楼猪勳章栏赫然两个VC/MFC大板内专家分第一名、第三名,我震惊了。
膜拜下真正的系统程序员。
[/Quote]术业有专攻、闻道有先后~
Crazywa 2010-10-29
  • 打赏
  • 举报
回复
又抬头一看,楼猪勳章栏赫然两个VC/MFC大板内专家分第一名、第三名,我震惊了。
膜拜下真正的系统程序员。
mark620 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 crazywa 的回复:]
<a href="javascript:window.open('Untitled-1.html').opener=null;void 0;">open window b</a>
[/Quote]
Crazywa 2010-10-29
  • 打赏
  • 举报
回复
<a href="javascript:window.open('Untitled-1.html').opener=null;void 0;">open window b</a>
hch126163 2010-10-29
  • 打赏
  • 举报
回复
这个很难

可在 beforeunload 中判断 有没有点击过窗口,或者按过alt+f4 如果没有是通过 close 或者 location
或者子窗口 用 window.opener 来导致的重定向!
不过在firefox 中 beforeunload 的 event 值,是判断不了那些情况的!IE的可以!
if(window.addEventListener){
window.addEventListener('beforeunload', function(e){ },false);
}else{
window.attachEvent('onbeforeunload',function(){ });
}
Mr-Jee 2010-10-29
  • 打赏
  • 举报
回复
window.opener = null?
这样不可以吗

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧