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

Javascript Metro IE10:如何检测是否可以使用setHomePage(),javascript,internet-explorer,windows-8,microsoft-metro,internet-explorer-10,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 documen

客户希望在有此功能的浏览器上显示链接,将他们的页面设置为主页(我知道现在是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);
        });
    }
}
链接在所有IE(包括10个)上按预期显示,在所有其他浏览器上不显示

唯一的问题是Metro IE10。“制作主页”链接在这里,但它不起作用。当你点击它时,什么也不会发生


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

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

在设置行为之前:

>> 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"
如果首先添加该行为,则不同:

>> 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"
这种特征检测方法显然存在问题。我建议简单地向用户展示如何使页面成为主页,或者找到另一种方法来定位IE9之下的目标

编辑

我做了更多的搜索,但Metro和Desktop之间似乎没有足够的区别来区分它们。我能给出的最好的建议仍然是,让用户将其设置为主页或以ActiveX为目标的步骤


由于Metro永远不允许ActiveX,因此它将始终被排除,但您也将排除手动禁用它的任何桌面版本。至少它永远不会向客户展示一个坏掉的功能。

当我回到家(如果还没有其他人回答),我会玩它,但这很奇怪。。。不过这是有道理的,Metro没有主页设置。如果您尝试测试或访问不是JScript引擎真正部分的内容,MS的答案基本上是“未知”。因为setHomePage()不是JS的一部分,而是MS的发明,所以我如何测试是否可以使用它。在IE10以下的所有IEs和IE10桌面上都像charm一样工作。IE10 Metro是唯一的问题-仍然返回“未知”,但由于没有主页,因此无法正常工作。经过编辑的答案,虽然不太好。因此,我最终这样做:如果(typeof document.body.setHomePage!=“undefined”&&isactiveexecabled())丑陋,但不会给出误报