我在A.html中ifrme了B.html,B.html会调用A.html页面上的js方法(parent.SetChanged())。A.html上面的js方法如下:var hasModified=false;
function SetChanged() {
hasModified = true;
}
因为A.html和B.html不在同一个域里,这个跨域问题怎么解决?

解决方案 »

  1.   

    jsonp  不过这个只能get请求
      

  2.   

    跨顶级域调用js方法无解,如果是不同的2级域名,可以设置document.domain="顶级域名"来实现跨域
      

  3.   

    这种情况用jsonp是不可取的,要实现跨域可以有以下这种方式:
    在B.html上动态生成一个iframe,内嵌C.html,该iframe的url为域名A(与A.html在同个域名下)的一个url,该url在加载时会执行一段js脚本:parent.parent.SetChanged()。
    C.html的parent是B.html,B.html的parent就是A.html,这样就不跨域了。这种方式我们在项目中使用过,在IE8以上和FireFox下是可行的,其他浏览器没测试过,就不敢说了。
      

  4.   

    iframe可以,还有被跨域的页面要设置一个IE的post头 具体是什么记不清了
      

  5.   

    http://www.cnblogs.com/zhangliang0115/archive/2012/08/16/2642138.html不过用jsonp的方式仅是一个get请求,用iframe套c.html,你这种情况又不可能。顶级域名的跨域说实话,我认为是无解的。