chrome 的 try catch 的问题
两个页面,一个父页,一个子页,父页里有一个iframe指向子页。
如果父页和子页在同一个域名里,那么可以访问 top.aa ,如果不在同一个域里面,子页虽然可以访问 top ,但是不能给 top.aa 设置值。
我想做一个“缓存”,把一些常用信息缓存在 top里。因为父页被更新的次数要远小于子页的更新次数。
但是问题是,并不一定在一个域名里,不在一个域名里就不做缓存了。
我想做一下判断,typeof top.__cache 在跨域的时候会报错,于是想用try,但是IE里面好用,chrome里面不好用。
折腾半天只好采用折中的办法来判断,虽然可以判断出来,但是还是会报错。
请问一下有没有更好的办法(注意,在chrome浏览器里面要好用)。我的代码如下:
try {
if (typeof top == "undefined")
canUseCache = false;
else {
top.t_m_p = "tmp";
if (top.t_m_p != "tmp") /*chrome里,抓不住这个异常,只好这么判断了*/
canUseCache = false;
else {
if (typeof top.__cache == "undefined")
top.__cache = {};
canUseCache = true;
}
}
} catch (e) {
/* 出异常,不允许访问,不缓存了。*/
canUseCache = false;
}
------解决方案--------------------原来你说的是document.domain属性,这个属性是只读的,赋值就会报安全错误,不然就天下大乱了
那就直接通过比较它不就完了
top的类型是window,不是document