IE下设置document.domain造成无法和子Iframe通信的解决方法

在IE下如果父页面设置了document.domain = document.domain;

即使子页面iframe和父页面同源,父子页面也无法通信,此时需在子页面也加上 document.domain = document.domain;

在子页面判断是否可和父页面通信及修复的完整代码如下(就用上面的document.domain = document.domain也可达到同样目的):

try {

    var t = parent.document;

    if (!t) {

        document.domain = document.domain;

    }

    t = null;

} catch (e) {

    document.domain = document.domain;

}

//will be removed after we use long domain

try {

    var t = parent.document;

    if (!t) {

        document.domain = document.domain
                .match(/[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}$/);

    }

    t = null;

} catch (e) {

    document.domain = document.domain.match(/[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}$/);

}

还有一篇类似问题的文章地址:https://www.cnblogs.com/trmark/archive/2013/04/09/3010440.html

posted @ 2018-12-18 10:35  jim520  阅读(356)  评论(0编辑  收藏  举报