7

在 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 页面。

有点粗鲁。

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

4

3 回答 3

6

我相信正确的做法是设置相应的链接类型属性,这样浏览器就不会为目标窗口提供和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

于 2016-04-28T22:20:24.880 回答
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。当它加载时(或超时后),您可以在该窗口中编写一些代码,然后打开有问题的链接。然后有问题的链接只是关闭你的缓冲页面。去他妈的!给用户力量!

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

最终编辑: 简单逻辑的人...
<a href="http://www.chairworks.com/home.html" target="_blank">www.chairworks.com</a>
适用于所有人,无需 javascript。
请参阅此工作jsfiddle 示例

于 2012-08-18T06:46:22.370 回答
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;阻止浏览器正常使用的hrefandtarget属性。
于 2012-08-18T07:10:13.710 回答