ifram引用一个跨域的页面如何获取页面的url
时间: 2024-03-20 10:38:49 浏览: 116
如果 iframe 引用的是一个跨域的页面,那么你无法直接获取该页面的 URL,因为同源策略会阻止跨域的 JavaScript 访问其他页面的信息。但是,你可以通过以下方式来获取页面的 URL:
1. 在跨域页面内部,使用 `window.parent.location.href` 获取父窗口的 URL,然后通过 `postMessage` 方法将该 URL 发送给父窗口。
例如,在跨域页面中可以这样实现:
```javascript
// 获取父窗口的 URL
var parentUrl = window.parent.location.href;
// 将 URL 发送给父窗口
window.parent.postMessage(parentUrl, '*');
```
然后,在父窗口中,可以监听 `message` 事件来接收跨域页面发来的信息:
```javascript
window.addEventListener('message', function(event) {
// 判断消息来源是否是 iframe
if (event.source === iframe.contentWindow) {
// 打印跨域页面的 URL
console.log(event.data);
}
});
```
2. 在同源页面中,可以使用 `iframe.contentWindow.location.href` 获取 iframe 中加载页面的 URL。
例如,在同源页面中可以这样实现:
```javascript
var iframe = document.getElementById('my-iframe');
var url = iframe.contentWindow.location.href;
console.log(url);
```
需要注意的是,如果跨域页面和父窗口不在同一个域名下,那么在使用 `postMessage` 方法时,需要将第二个参数设置为 `'*'`,以允许跨域通信。同时,你也需要对接收到的消息来源进行验证,以确保安全性。
阅读全文