偶尔看到了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');