document.referrer的使用和window.opener 跟 window.parent 的区别

偶尔看到了document.referrer,之前一直有点疑惑与window.opener 和 window.parent之间的区别

首先查了一下w3cSCHOOL,

上面的解释:referrer 属性可返回载入当前文档的文档的 URL。

但是解释中没有写怎么载入才能用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 

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

document.referrer的具体应用场景

如果要显示某一个网站的超链接跳转到你的网站你可以如下:

<script type="text/javascript"> 
    var refurl=document.referrer; 
    if(refurl.indexOf("wowgame")>-1){ 
        alert("你的来源网址为:【"+document.referrer+"】目前本站与该站已终止合作。"); 
        location.replace(refurl); 
    }     
</script>

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');
原文地址:https://www.cnblogs.com/waisonlong/p/4666798.html