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 + ']';
}
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;
}
newDomain = 'xxx.com';
if (newDomain != oldDomain) {
document.domain = newDomain;
}