gpt4 book ai didi

javascript - 如何优雅地处理 iframe 断路器?

转载 作者:搜寻专家 更新时间:2023-11-01 05:08:35 27 4
gpt4 key购买 nike

我知道没有办法杀死 iframe 断路器......但是,我想知道,有没有办法优雅地处理它。

到目前为止,我在退出之前设法检测到它,使用 <body onunload="function();"> .我想知道是否可以阻止它加载iframe或强制它在新窗口中打开等。

干杯,米奇

最佳答案

事实上,你可以做你真正想做的事,也就是bust the iframe buster .该技术允许您使用 onbeforeunload 将页面切换回您的页面,但这是间接的,因为浏览器太智能了,不允许您在 onbeforeunload 中设置 URL。因此,onbeforeunload 设置一个指示器变量来标记 URL 已更改,并且您使用页面加载时建立的 setInterval 例程定期轮询该变量。只要您的轮询速度足够快以捕捉到变量的变化,您就可以自己介入并更改页面的 URL。诀窍是将其更改为返回 204 的页面,这是一种特殊状态,告诉浏览器不要理会当前页面。

也就是说,这是一场猫捉老鼠的游戏。查看Jeff Attwood's StackOverflow question on this ,他在那里询问如何破坏上述技术。网页可以通过超过轮询间隔来破坏 buster buster;基本上,他们将 URL 设置为指向一个小页面,并且该页面已经被缓存。一旦 URL 更改为该页面,它的加载速度将快于轮询例程可以跳入并注意到指示器变量已更改的速度。

首先要阻止加载框架并不容易。如果你真的想要,你可以让你的服务器下载页面并解析 Javascript 以查看是否存在 iframe-busting 技术。但是,如果没有模拟浏览器,您只能依靠基本的模式匹配,页面很容易绕过它。 (例如,使用 top["l"+"ocation"] 而不是 top.location)。

一种更聪明的技术是跟踪哪些 URL 正在使用 Ajax 请求重定向回服务器。 (例如,如果 iframe 在加载后仍然存在,请将 Ajax 请求发送回您的服务器)。您不能 100% 保证这些请求的准确性,因为它们来自浏览器,但您至少可以使用它们来建立手动黑名单。

您也不能强制 iframe 跳出到另一个窗口。

关于javascript - 如何优雅地处理 iframe 断路器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com