vapour's blog

22Jul/110

ie中的跨域和ckeditor

在IE中修改了document.domain进行提权后(无论修改前后域名是否不同),iframe都会出现跨域问题。

ckeditor中检查跨域的代码,是根据判断document.domain和window.location.hostname是否相同来来判断跨域的。

isCustomDomain: function () {
   if (!this.ie) return false;
   var g = document.domain,
   h = window.location.hostname;
   return g != h && g != '[' + h + ']';
}

当我们执行在页面执行 document.domain = document.domain 后,执行 isCustomDomain 会返回false,这时ie会因为跨域,报拒绝访问的错误。

所以当我们,在修改document.domain时要进行判断,当新域和旧域不同时再修改document.domain

var oldDomain = document.domain,
    newDomain = 'xxx.com';
if (newDomain != oldDomain) {
   document.domain = newDomain;
}