【问题标题】:Metro IE10: How to detect if we can use setHomePage()Metro IE10:如何检测我们是否可以使用 setHomePage()
【发布时间】:2012-10-08 19:01:07
【问题描述】:

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

【问题讨论】:

  • 当我回到家时(如果还没有其他人回答)我会玩它,但那很奇怪......虽然它确实有道理,但 Metro 没有主页设置。

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


【解决方案1】:

在桌面和 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 和 Desktop 之间似乎没有足够的区别来区分它们。我能给出的最佳建议仍然是link to a page,并为用户提供使其成为主页或定位 ActiveX 的步骤。

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

【讨论】:

  • 如果您尝试测试或访问不是 JScript 引擎真正组成部分的东西,基本上“未知”是 MS 的答案。
  • 由于 setHomePage() 不是 JS 的一部分,而是 MS 发明的,所以我测试是否可以使用它。在 IE10 以下的所有 IE 和 IE10 桌面上都像魅力一样工作。 IE10 Metro 是唯一的问题 - 仍然返回“未知”,但由于没有主页,因此无法正常工作。
  • 编辑过的答案,虽然不是太好。
  • 所以我最终这样做了: if ( typeof document.body.setHomePage !== "undefined" && isActivexEnabled() )
  • 丑但不会误报
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多