Javascript 从其他子域页面访问子域iframe url

Javascript 从其他子域页面访问子域iframe url,javascript,jquery,html,iframe,same-origin-policy,Javascript,Jquery,Html,Iframe,Same Origin Policy,我正在尝试访问承载在同一域中的子域上的iframe的iframe contentWindow属性。 因此,我在a.domain.com(托管父页面角色)上有以下代码: $(文档).ready(函数(){ $('#frame').load(函数(){ var iframe=document.getElementById('frame'); if(iframe){ var item=iframe.contentWindow; 如果(项目索引(“已完成”)!=-1){ window.location

我正在尝试访问承载在同一域中的子域上的iframe的iframe contentWindow属性。 因此,我在a.domain.com(托管父页面角色)上有以下代码:


$(文档).ready(函数(){
$('#frame').load(函数(){
var iframe=document.getElementById('frame');
if(iframe){
var item=iframe.contentWindow;
如果(项目索引(“已完成”)!=-1){
window.location.href='../Home/Completed/';
}否则{
window.location.href='../Home/payreach/';
}
}            
});
});
实际的iframe内容位于b.domain.com上,我想在iframe中获取当前页面

我看到了一些需要在a.domain.com和b.domain.com中设置document.domain=“domain.com”的示例,但例如,关于document.domain,我需要在a.domain.com和b.domain.com中设置什么

我需要在b.domain.com的哪些页面中设置document.domain值


提前感谢,Laziale

我也遇到了同样的情况,我发现使用window.postMessage是一种更好的帧间通信方式:


如果要使用您提到的方法,框架内加载的每个页面都需要手动设置document.domain on load。父页面也需要设置它。它只是document对象的内置javascript属性。

在两个页面中添加document.domain='your.domain'

像这样。别忘了双亲

document.domain='corp.local'; 只有父母喜欢

document.domain='corp'; 不行

正如我在这里提到的。

这份文件很有帮助。

我也查看了postMessage功能,但我无法对位于iframe中、托管在b.domain.com上的文件进行任何更改。你能告诉我你是如何在a.domain.com和b.domain.com中使用一些虚拟数据的postMessage功能的吗。谢谢如果您不能同时更改a.domain.com和b.domain.com中的代码,那么您将无法在两者之间进行通信。您可以设置document.domain,但不能设置它。因此,您可以将“a.domain.com”更改为“domain.com”,但不能将“a.domain.com”更改为“b.domain.com”。您需要访问代码才能设置document.domain属性并执行window.postMessage方法。您能否提供代码示例?如果我有权访问代码,我该怎么做?谢谢,代码视图不起作用。希望您能够理解:函数sendToFrame(){var mf=document.getElementById('myFrame').contentWindow;//您发送的消息由您决定,只要它是一个字符串。我使用JSON,将其字符串化,然后在另一端解析var jsObj={Content:“Some Data”};//将消息发送到目标mf.postMessage(JSON.stringify(jsObj),“”;}
<script type="text/javascript">
    $(document).ready(function () {        
        $('#frame').load(function () {            
            var iframe = document.getElementById('frame');            
            if (iframe) {
                 var item = iframe.contentWindow;             
                if (item.indexOf("Completed") != -1) {
                    window.location.href = '../Home/Completed/';                   
                } else {
                    window.location.href = '../Home/PayAgain/';
                }
            }            
        });
    });
</script>