什么是这个window.top检查表演?这是检查iframe吗?

时间:2011-02-01 14:53:17

标签: javascript jquery

if(window.top!==window.self){document.write="";
window.top.location=window.self.location;
setTimeout(function(){document.body.innerHTML=""},1);
window.self.onload=function(){document.body.innerHTML=""}};

这是否确保页面不在iframe内呈现?

4 个答案:

答案 0 :(得分:4)

是的,似乎这个脚本尝试使自己成为父框架(如果它还没有)。正如Pointy所说,这些并不总是奏效。除非创建该文档,否则Javascript无法在大多数浏览器中“突破”它的所有者文档。或者,如果包含Javascript的页面是以相同域策略不起作用的方式动态加载的。 (如果您的网站位于iframe /框架中,可能不是这样)如果某个网页正在另一个网页中打开,则脚本不应具有修改权限父文件。

这是您发布的代码,分为几行注释。

if(window.top!==window.self){ // is the outermost document not this document?
  document.write=""; // write an empty text node to the document. (not sure why)
  window.top.location=window.self.location; // set the parent document's location to this document's location.
  setTimeout( function(){document.body.innerHTML=""}, 1); // after 1 millisecond make this document's HTML empty. (Probably a memory leak fix)
  window.self.onload = function(){document.body.innerHTML=""} // Another memory leak fix to clear the current document when it is done loading.
};

答案 1 :(得分:1)

它看起来像一个“帧破坏者”例程。这些事情是否有效似乎是controversial topic.

答案 2 :(得分:0)

window.top 代表浏览器中最顶层的窗口。简单来说,它就是浏览器窗口本身。

代码似乎是用空格清除所有iframe。

答案 3 :(得分:0)

  

这是否确保页面不在iframe内呈现?

iframeframe,是的。它试图爆发。