Mic*_*ong 4 javascript iframe jquery
我明白没有办法杀死iframe断路器......但是,我想知道,有没有办法优雅地处理它.
到目前为止,我设法在退出之前检测它,使用<body onunload="function();">.我想知道是否可以阻止它加载iframe或强制它在新窗口中打开等.
干杯,米奇
事实上,你实际上可以做你真正想做的事情,这就是破坏了iframe的破坏者.该技术允许您使用onbeforeunload将页面切换回您的页面,但间接地,因为浏览器太聪明,无法让您在onbeforeunload中设置URL.因此,onbeforeunload设置一个指示符变量来标记URL已更改,并使用在页面加载时建立的setInterval例程定期轮询该变量.只要您足够快地轮询以捕获变量,您就可以自己跳转并更改页面的URL.诀窍是将其更改为返回204的页面,这是一个特殊状态,告诉浏览器单独离开当前页面.
也就是说,这是一场猫捉老鼠的游戏.查看Jeff Attwood的StackOverflow问题,在那里他询问如何破坏上述技术.网页可以通过击败轮询间隔来破坏破坏者; 基本上,他们将URL设置为指向一个小页面,以及一个已经缓存的页面.一旦URL更改为该页面,它将加载得比轮询例程可以跳入更快,并注意到指示符变量已更改.
首先要防止装入框架并不容易.如果您真的想要,可以让您的服务器下载页面并解析Javascript以查看是否存在iframe破坏技术.但是,如果没有模拟浏览器,您只能依赖基本的模式匹配,并且页面很容易绕过它.(例如,使用top ["l"+"ocation"]而不是top.location).
更智能的技术是跟踪哪些URL使用Ajax请求重定向回服务器.(例如,如果iframe在加载后仍然存在,则将Ajax请求发送回您的服务器).您无法100%保证这些请求的准确性,因为它们来自浏览器,但您至少可以使用它们来构建手动黑名单.
您也无法强制iframe突破到另一个窗口.
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |