前言:由于浏览器的安全性限制,目前还没有通用的判断浏览器主页的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)。