IE浏览器判断浏览器主页的方法(同父域)
?
前言:由于浏览器的安全性限制,目前还没有通用的判断浏览器主页的js方法 ,只有IE下可以判断(这里有个地方需要注意下,比如判断主页是否为aaa.bbb.com,只能在aaa.bbb.com同域下的页面调用如下判断代码)
?
以下是IE下的通用代码:
? ? ? ? ? ? var homePageDom = false;
? ? ? ? ? ? /*
? ? ? ? ? ? * ?创建IE下的主页dom
? ? ? ? ? ? */
? ? ? ? ? ? function _getHomePageDom() {
? ? ? ? ? ? ? ? if (!homePageDom) {
? ? ? ? ? ? ? ? ? ? homePageDom = document.createElement("div");
? ? ? ? ? ? ? ? ? ? homePageDom.style.display = "none";
? ? ? ? ? ? ? ? ? ? homePageDom.style.behavior = "url(#default#homePage)";
? ? ? ? ? ? ? ? ? ? document.body.appendChild(homePageDom);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return homePageDom;
? ? ? ? ? ? }
? ? ? ? ? ? /*
? ? ? ? ? ? * ?判断IE浏览器主页方法
? ? ? ? ? ? * ?@param {string} url 主页的全路径
? ? ? ? ? ? * ?@return {bool} true表示url为主页
? ? ? ? ? ? */
? ? ? ? ? ? function _isHomePage(url) {
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? return _getHomePageDom().isHomePage(url);
? ? ? ? ? ? ? ? } catch (e) { }
? ? ? ? ? ? ? ? return undefined;
? ? ? ? ? ? }
这里有个问题,如果调用页面和判断的页面不同域,以上方法就失效了,但是,如果这两个页面父域相同的话,比如在aaa.bbb.com下判断ccc.bbb.com是否为浏览器主页面,这里有个小技巧,通过iframe。可以在ccc.bbb.com的域下创建一个页面,作为子页面嵌套在aaa.bbb.com里,判断的代码写在这个子页面里(这个子页面和ccc.bbb.com同域,所以可以判断),父页面动态创建iframe,把src指向这个子页面,然后在iframe load的回调函数里调用子页面的方法拿到结果即可(注意:需要在父页面和子页面里加上一段代码document.domain=bbb.com)。
?
?