获取来自另一个域的iframes完整url
Get iframes complete url which is from another domain
父页面可以获得iframe的URL(和fragment),但是在iframe更新了它的URL fragment后,父页面不能通过fragment获得更新后的URL。
示例iframe URL:http://example.com/a/b/c/d.html?k1=v1#i1=j1(注释片段)
这是在跨域环境中。父域与iframe域不同。目前只使用firefox进行测试。
使用以下代码:
var ifr = document.getElementById('myiframe');
if(ifr){
alert(ifr.src);
}
由于安全原因是不可能的吗?
我试图让iframe与使用片段作为有效载荷的父通信。
这两个域都在我的控制之下,我试图避免在页面之间实现通信的漫长道路。
有没有其他不涉及服务器往返的技术?
您可以使用window.postMessage
API通过在任何window
对象上调用postMessage
来在帧之间进行通信。这适用于跨域消息传递,只要接收帧具有message
事件侦听器。
postMessage用法:
otherWindow.postMessage(message, targetOrigin);
//e.g.
yourIFrame.contentWindow.postMessage({curURL: location.href}, "http://www.your2ndDomain.com");
//or
top.postMessage({curURL: location.href}, "http://www.your1stDomain.com");
监听消息:
window.addEventListener("message", function(e){
//You must check your origin!
if(event.origin !== "http://www.your1stDomain.com")
return;
//Get the data
var data = event.data;
alert(data.curURL);
}, false);
相关文章:
- 如何检查用户在html5视频播放器中观看了完整的视频
- PERL-下载CSV文件不完整
- Json在完整日历中对数据进行了编码
- 如何在下拉列表中选择完整的日历月份和年份
- 谷歌公共日历链接没有'不工作(完整日历)
- 如何在完整日历中的当天点击时显示活动详细信息
- 表单's的action属性-如何在javascript中指定完整的应用程序路径
- 将GET请求(HTML字符串)转换为完整的DOM对象
- Vue iFrames与Vue路由器
- HTML5历史记录-返回上一个完整页面按钮
- 纯JS中的AJAX完整处理程序
- 如何在加载完整页面后严格执行javascript代码
- iFrames并再次检测焦点
- 完整的网站控制与键盘(无鼠标)
- jQuery完整日历添加事件,仅包含月份和日期
- 从工作日结束到下一个工作日开始的完整日历JS包装时间
- 如何制作侧边栏以增加其完整长度
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 如何在PhantomJS中使用iframes获得完整的解释html源代码
- 获取来自另一个域的iframes完整url