0

客户希望在具有此功能的浏览器上显示链接以将其页面设置为主页(我知道它是 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 上消失?

4

1 回答 1

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"

这种特征检测方法显然存在问题。我建议您简单地创建一个页面,向用户展示如何将该页面设为主页或找到另一种定位于 IE9 以下的方式。

编辑

我进行了更多搜索,但 Metro 和 Desktop 之间似乎没有足够的区别来区分它们。我能给出的最佳建议仍然是链接到包含用户步骤的页面以使其成为主页或以 ActiveX 为目标。

由于 Metro 永远不会允许 ActiveX,它将始终被排除在外,但您还将排除任何手动禁用它的桌面版本。至少它永远不会向客户呈现损坏的功能。

于 2012-10-09T01:30:48.370 回答