window.opener 跟 window.parent and document.referrer的区别

window.opener是当前页面A通过open方法弹出一个窗口B,那在B页面上 window.opener就是A

window.parent是当前页面C通过location.href转到新的页面D,那在D页面上window.parent就是B

或者是页面E里套一个frame为F,那F页面的window.parent就是E

A页面通过open方法打开B页面,B页面通过location打开C页面,C页面上刷新A页面
function refreshParenetWindow( refreshMethod )
{
switch( refreshMethod )
{
case "ButtonClick": oParentButton = window.parent.opener.document.getElementById( "btnSearch" );
oParentButton.click();
break;
case "Location": window.opener.navigate(window.opener.location.href);
break;
default: window.opener.navigate(window.opener.location.href); break;
}
}
A页面通过open方法打开B页面,B页面通过open打开C页面,C页面上刷新A页面在B页面的onunload事件中写一段刷新A页面的javascript方法,在C页面关闭的时候,关闭B页面,就可以实现。


document.referrer 用法

referrer 描述: document对象的referrer属性,返回导航到当前网页的超链接所在网页的URL。

举例:

1. a.html文件内容如下: 浏览b.html
2. b.html文件中的内容如下:
3. 则在通过a.html中的超链接访问b.html的时候,显示的结果是: http://127.0.0.1:8180/a.html 说明: 经过测试,需要将两个文件放在服务器中才能得到想要的结果,若直接在本地文件夹中则得到空字符串,若直接在浏览器地址栏中输入b.html的URL地址或使用打开菜单访问b.html,则document.referrer的值为空字符串。 









js操作frame详细解说,window.opener和window.parent的区别


frame框架里的页面要改其他同框架下的页面或父框架的页面就用parent
window.opener引用的是window.open打开的页面的父页面。

window.frames对象可以引用iframe里的页面,也可以引用frameset里的页面.

可以这样
window.frames[0].document.getElementById('xx');
可以这样
window.frames[0].document.body.innerHTML;

frm = window.parent.window.frames['uploadFrame'];
frmDocument = frm.document;
frm.sb(3); //sb 是uploadFrame页面里的一个函数

对于firefox
如果你遇到报错:parent.document.frames has no properties
换为如下代码就可以了,这个代码IE,ff兼容. frm = window.parent.window.frames['uploadFrame'];其实 frames 集合并不是挂在 document 而是挂在 window 对象下.

注意这样修改frame里的页面有限制,就是必须是同域下的,否则无法访问
如果是同一域下,但是子域名不同,那么涉及到的js,html文件都加上一句。
document.domain = xxx.com [这里填写你的域名]

document.getElementById('iframeid').contentWindow.document.getElementById('someelementid');

你可能感兴趣的:(window.opener 跟 window.parent and document.referrer的区别)