最近开发了一个amazon相关的插件,我是把插件UI固定定位放到了每个页面的最下面。
最开始用的是
(“html:first”).append(extensionHtml).append(hotjat).append(hotjarstyle);然后遇到了有iframe的页面就会出现多个插件UI。然后改为了window.top.
("html").append(divHtml).append(hotjat).append(hotjar_style);每个页面就只有在最外层的页面有插件UI。注意window.top.$(。。)的用法。
不跨域的前提下,window.top就能获得最顶层的window对象,于是你就可以通过window.top.document.getElementById(…)或者window.top. (...)(window.top. 即是顶层frame的jQuery实例)来查找元素了
附上查阅的资料:
原文:http://www.cnblogs.com/jiqing9006/p/5809713.html
Js中的window.parent ,window.top,window.self 详解
在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法打开当前窗口的那个窗口。
window.self
功能:是对当前窗口自身的引用。它和window属性是等价的。
语法:window.self
注:window、self、window.self是等价的。
window.top
功能:返回顶层窗口,即浏览器窗口。
语法:window.top
注:如果窗口本身就是顶层窗口,top属性返回的是对自身的引用。
window.parent
功能:返回父窗口。
语法:window.parent
注:如果窗口本身是顶层窗口,parent属性返回的是对自身的引用。
在框架网页中,一般父窗口就是顶层窗口,但如果框架中还有框架,父窗口和顶层窗口就不一定相同了。
判断当前窗口是否在一个框架中:
var b = window.parent==window.self; document.write( "当前窗口是否是底层窗口:"+b );你应当将框架视为窗口中的不同区域,框架是浏览器窗口中特定的部分。一个浏览器窗口可以根据你的需要分成任意多的框架,一个单个的框架也可以分成其它多个框架,即所谓的嵌套框架。
parent与opener的区别:
parent指父窗口,在frameset中,frame的parent就是frameset窗口。
opener指用window.open方式创建的新窗口对应的原窗口。
parent是相对于框架来说父窗口对象。
opener是针对于用window.open打开的窗口来说的父窗口,前提是window.open打开的才有。
附:Window对象、Parent对象、Frame对象、Document对象和Form对象的阶层关系。
Window对象→Parent对象→Frame对象→Document对象→Form对象。
如下: parent.frame.document.forms[0].elements[0].value。