- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想检测用户何时使用 Metro 与 Desktop IE10。
我在网上搜索了很多,我发现没有 100% 的方法可以找出(使用代码)用户是在 IE10 Metro 风格还是桌面风格中运行。然后我找到了一些网站,其中有一个检测 activeX 的 avascript。
这是否足以检测 Metro 与 Desktop?
代码如下:
<html>
<body>
<script type="text/javascript">
var myActiveX = null;
var isActiveXCapable = false;
function InitMyActiveX() {
try {
new ActiveXObject("");
}
catch (e) {
// FF has ReferenceError here
if (e.name == 'TypeError' || e.name == 'Error') {
isActiveXCapable = true;
}
}
try {
myActiveX = new ActiveXObject("My.ActiveX");
}
catch (e) {
myActiveX = null;
}
if (myActiveX != null) {
document.getElementById("myInfo").innerHTML = myActiveX.GetSomeInfo();
} else {
document.getElementById("CallMyActiveX").setAttribute("disabled", "disabled");
if (!isActiveXCapable) {
document.getElementById("myInfo").innerHTML = "Browser does not support ActiveX";
} else {
document.getElementById("myInfo").innerHTML = "MyActiveX is not installed";
}
}
}
function DoSomething() {
InitMyActiveX();
if (myActiveX != null) {
var s = myActiveX.DoSomething();
document.getElementById("myResult").innerHTML = s;
}
}
</script>
<div id="myInfo"></div>
<input type="button" id="CallMyActiveX" value="Call me" onclick="DoSomething()" />
<div id="myResult"></div>
</body>
</html>
仅在 IE10 桌面上执行时,我看到“未安装 MyActiveX”。在 firefox 中我得到:“MyActiveX 未安装”。我会在 IE10 Metro 风格中得到相同的结果吗?这是否有助于确定是否在 metro 中运行?
如果这不正确,无法区分它们,那么如何在 IE10 桌面中完全模仿 Metro 风格?我如何完全禁用 activeX,以便它会给我与 metro Ie10 相同的结果?
谢谢,塔尔
最佳答案
在网上搜索确定我的 IE10 是作为桌面版还是 Metro 版运行的解决方案后,我最终在以下功能中总结了所有内容:
function checkForIE10MetroStyle() {
var result = false;
if (window.navigator.msPointerEnabled && window.navigator.msMaxTouchPoints >= 2) {
var platF = navigator.platform;
var cpu = navigator.cpuClass;
if (platF.toLowerCase() == 'win64' || cpu.toLowerCase() == 'arm') {
// both potential platforms found - now search deeper
try {
// IE10 Metro does not support ActiveX
new ActiveXObject("htmlfile");
} catch (e) {
// finally check for fullscreen-mode
result = (window.innerWidth == screen.width && window.innerHeight == screen.height);
}
}
}
return result;
不幸的是,没有 100% 确定的确切可能性......但首先我检查msPointerEnabled 和(但这不是必需的)如果至少有两个“接触点”可用。由于我的脚本在触摸版和鼠标版之间会有所不同,因此我需要进行此检查 - 您可以将其忽略。
但由于 IE10 也支持 msPointerEnabled,我遵循许多人建议的平台字符串...结合 CPU,因为 MS Surface 运行 ARM。最后是两点:ActiveX 和分辨率...
但不幸的是,即使所有这些点都可以用具有触摸功能的台式机/笔记本电脑来模拟,如果你想......嗯,到目前为止,很难获得你的桌面 IE10,但并非不可能。
如果 MS 实现了一个简单的属性来判断触摸与否以及桌面还是 metro ,我会很高兴......但他们没有。
希望我的代码对您有所帮助?
关于javascript - 区分 IE10 桌面版和 metro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236867/
有没有办法将 Dapper 包含在 Metro 应用程序中? 它依赖于 WinRT 中遗漏的 System.Data。 如果没有,是否有任何类似的框架可以使用? 最佳答案 Is there any w
我想为 Windows 8 Embedded Standard(发布预览版)创建一个自定义 shell(WinForms),允许用户运行、安装或更新应用程序(可以是桌面和/或 Metro 应用程序)。
我需要使用 c++ (WINRT/Metro) 在我的应用程序中生成唯一的临时文件名。如我所见,Win32 API GetTempFileName标记为仅在桌面上使用。 Metro 风格应用程序的等价
我想检索登录用户的用户名。是否可以?该应用程序仅用于内联网。 最佳答案 要将 Windows 身份验证添加到应用程序,请声明 'enterpriseAuthentication' capability
Metro UI 不支持多重绑定(bind)吗? 还是只是还没有添加? 最佳
我有公钥模数和公钥指数,我需要在 Metro 风格应用程序中生成公钥和加密数据。在 C# 中,我们有 RSAParameters 类,但我找不到任何适用于 Metro 风格应用程序的此类内容。 当我使
我从某人那里收到了一个项目,其中包括一个带有一些传感器和灯的 Arduino (Uno) 板,带有 USB 电缆以及用于通过 COM 端口与该板通信的文档化协议(protocol)。它适用于一些现有代
我正在尝试使用 Windbg 调试 C++ Metro 应用程序。由于 Windbg 在桌面上执行,应用程序在调试 session 5 秒后暂停,我必须切换回 Metro Desktop 以恢复应用程
任何人都可以建议我如何在 MahApps Metro 布局中实现图 block 的拖放。谢谢.. 最佳答案 我们使用 punker76 的另一个库取得了成功。 它轻量级且易于实现! GitHub ht
我想为我的 Android 应用程序设计 Metro 风格的 UI。怎么做?有什么捷径吗?我尝试使用 ImageView 制作一个。如何为其赋予效果?还有其他方法吗?请帮助我.... 最佳答案 试试
我看到 Metro 应用已更名为“Windows 8 应用”或“Windows 应用商店应用”。 是否有独立于通过其商店发布的工作流程的全屏应用程序风格的术语?你能构建一个可以直接安装的 Window
我正在开发一个应用程序,它将一些文件下载到本地存储进行缓存。在线文件有时位于 3 或 4 个嵌套文件夹中,我也想将此层次结构保留在我的缓存文件夹中。 除了 (await (await folder.G
我正在开发一个 Office 加载项,并想添加一个 WPF Mahapps Windows。 一切顺利,但我无法应用 Mahapps Windows 样式。 看教程here我看到我更新了 App.xa
我正在开发一个 Office 加载项,并想添加一个 WPF Mahapps Windows。 一切顺利,但我无法应用 Mahapps Windows 样式。 看教程here我看到我更新了 App.xa
如何获取Windows应用商店应用(Metro应用)中的唯一设备? 我们可以使用: Windows.System.Profile.HardwareIdentification.GetPackageSp
我正在执行 http GET 来获取数据,我正在使用 IXMLHTTPRequest2。 如果我 GET url "http://foo.com"(curl "http://foo.com") ,第二
我正在使用 Javascript 和 HTML 构建 Windows Metro 应用程序,但它崩溃了 HierarchyRequestError : Exception was thrown but
我正在创建一个简单的 metro 应用程序。我也在创建同一个应用的非 Metro 版本。 我面临的问题是 VS 不允许我将普通类库引用到 Metro 应用程序中,也不允许我将 Metro 类库引用到普
我正在尝试捆绑 markdown 文件而不产生太多开销(即不将它们手动添加到 Xcode 和 Android Studio 中的 Assets 包,不使用第 3 方依赖项)。 我的想法是允许 requ
能否在 Windows 8 上基于 C# XAML 的 Metro 应用程序中嵌入 IE Web 浏览器控件?另外,这样做时 HTML/Javascript 是否可以拥有 Windows 8 HTML
我是一名优秀的程序员,十分优秀!