我写了一个 html 代码,用另一个网站初始化我的 iframe。
例如我的域名是:
www.mydomain.com/Index.html
这里有一个
<iframe src = "www.anotherdomain.com/pages/firstPage.html"/>
每当 iframe 获得新的时,我想检测完整的新 src url。 iframe 文本包含指向初始化页面中其他页面的链接。完成它是否可能且合法?谢谢。任何帮助表示赞赏。
我猜它涉及跨源问题,但是否有解决此问题的方法?
更新
我试图通过
得到答案 document.getElementById("myIframeId").src
在帧加载事件中。但它一直显示初始化它的 src。它没有显示更新的 src。
document.getElementById("myIframeId").contentWindow.location.href
给出了一个 http 框架试图访问 iframe 中的 https 的安全错误。协议(protocol)不匹配。
我将本地主机设置为 SSL 并使用了 https,但请求被阻止了。我不知道为什么。
最佳答案
我不同意建议您应该使用“src”来检测 iframe 的当前 url 的答案。它根本不会给你当前的 url - 但它开始的 url。
域必须来自同一来源才能使用以下代码的方法:
$(document).ready(function() {
$('#myframe').load(function() {
alert($(this).get(0).contentWindow.location.href);
});
});
如果域来自不同的来源 - 但您可以访问两者(或两者都是您的),那么您可以使用 window.postMessage
函数和 contentWindow
属性用于发送父级数据以在新页面加载时显示的 iFrame。
这里有一个教程:http://javascript.info/tutorial/cross-window-messaging-with-postmessage
如果 iFrame 中的域完全不同,我能想到的一种方法是在服务器端脚本中加载该域,并让它使用更改的链接呈现此数据。现在您可以在 iFrame 中调用此脚本并在加载时使用 contentWindow.location.href
属性。
关于javascript - 如何检测当前的iframe url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919685/