防止外部页面重定向MY(父)页面

时间:2012-08-18 06:35:21

标签: javascript html anchor

在Mac OS 10.7上使用最新版本的Chrome。

我认为这是一个聪明的javascript,可以启用这个网页上的人:

http://www.chairworks.com/

...关闭首先打开(chairworks.com)页面的我(父母)页面。 我没有使用javascript打开它们,但使用带有<a>属性的target="_blank"标记。

如果我禁用了javascript,则行为会停止。

<a href="http://www.chairworks.com" target="_blank">www.chairworks.com</a>

我希望chairworks.com/上的页面只是在另一个标签/窗口中打开...但我发现只要新的浏览器标签打开,它就会关闭,然后我的页面(父选项卡/窗口)被重定向到chairworks.com页面。

有点粗鲁。

有人能指出我的代码能让他们做到这一点吗?我该如何预防呢? (假设我希望链接按预期运行,例如在我的演示页面中。)

3 个答案:

答案 0 :(得分:5)

我认为正确的做法是设置相应的链接类型属性,这样浏览器就不会为目标窗口提供opener引用。

<a href="https://untrusted-site.org" target="_blank" rel="noreferrer noopener">Link</a>

您可以在此处详细了解链接类型:https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types

答案 1 :(得分:2)

这是他们正在使用的脚本:

setTimeout('redirect_page()',0);
function redirect_page(){if (window.opener) { window.opener.location.href = '/home.html'; window.close(); } else { location.href = '/home.html'; }}

至于如何规避它(只是一个想法):
创建自己的空白页面,将其源设置为about:blank。当它加载时(或超时后)你可以写一些代码到那个窗口,然后打开有问题的链接。 然后违规链接就会关闭你的缓冲页面。 F * ck'm !!为用户提供动力!

编辑:看起来您也可以将您的网页命名为home.html呵呵,但这不是一个可行的解决方案..

最终编辑: SIMPLE LOGIC人......
<a href="http://www.chairworks.com/home.html" target="_blank">www.chairworks.com</a>
适合所有人,不需要javascript 请参见此工作jsfiddle example

答案 2 :(得分:1)

正如@GitaarLAB所解释的那样,目标网站使用window.opener属性来访问您的页面。自己使用一些Javascript,并在中间使用about:blank页面,可以帮助您减少对页面的访问权限。这就像是:

 <a href="http://www.chairworks.com/" target="_blank" onclick="var w = window.open('about:blank'); w.opener = null; w.open('http://www.chairworks.com/'); return false;">http://www.chairworks.com/</a>

一些注意事项:

  1. 我将href属性留给那些没有启用JS的用户(猜猜是什么!目标网站不会有JS!),或搜索引擎等网络抓取工具(只有那些不喜欢的人)虽然不关心JS的东西。
  2. 在重定向到目标网站之前,您可以通过重置新窗口的window.opener属性来剪切反向链接。
  3. 打开目标网站后,有一个return false;,以防止浏览器使用hreftarget属性。