Metro IE10:如何检测我们是否可以使用setHomePage()

时间:2012-10-08 19:01:08

标签: javascript internet-explorer windows-8 microsoft-metro internet-explorer-10

客户希望在可以使用此功能的浏览器上显示链接以将其页面设置为主页(我知道它是1999年),即基本上仅在IE上。

由于我想以正确和面向未来的方式做到这一点,我想出了一个在加载页面后运行的函数。这个想法是,如果,例如,IE11或IE12停止支持它,我的代码将正常工作。

function detectSetHomePage() {
    document.body.style.behavior="url(#default#homepage)";

    if (typeof document.body.setHomePage !== "undefined") {
        $(".makeHomepage").removeClass("hidden");
        $(".makeHomepage").on("click", function() {
            document.body.setHomePage(location.href);
        });
    }
}

链接在包括10在内的所有IE上按预期显示,并未显示在所有其他浏览器上。

唯一的问题是Metro IE10。 “制作主页”链接在这里,但是不起作用。单击它时没有任何反应。

那么如何修改我的“if”语句以使链接在Metro IE10上消失?

1 个答案:

答案 0 :(得分:0)

我在桌面和Metro视图以及IE9上都得到了非常奇怪的IE10结果。

在设置行为之前:

>> document.body.setHomePage
   undefined
>> typeof document.body.setHomePage
   "undefined"

如果首先添加行为,则会有所不同:

>> document.body.style.behavior="url(#default#homepage)"
   "url(#default#homepage)" 
>> document.body.setHomePage
   undefined
>> typeof document.body.setHomePage
   "unknown"

此特征检测方法存在明显问题。我建议只使用having a page向用户展示如何将网页设为主页,或者在IE9下找到另一种定位方式。

修改

我做了一些搜索,但Metro和桌面似乎没有足够的区别来区分它们。我可以提供的最佳建议仍然是link to a page,其中包含用户将其设为主页或以ActiveX为目标的步骤。

由于Metro永远不会允许ActiveX,因此它将永远被排除,但您也将排除任何手动禁用它的桌面版本。至少它永远不会给客户提供破碎的功能。