【发布时间】:2012-09-02 14:46:59
【问题描述】:
我想检测用户何时使用 Metro vs Desktop IE10。
我在网上搜索了很多,我发现的结论是,没有 100% 的方法可以找出(使用代码)用户是在 IE10 Metro 风格还是桌面风格下运行。 然后我找到了一些网站,它有一个检测 activeX 的 avascript。
这足以检测 Metro 与桌面吗?
代码如下:
<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 风格中得到相同的结果吗? 这将有助于确定是否在地铁中运行?
如果这不正确并且无法区分它们,那么我如何完全模仿IE10桌面中的Metro风格?如何完全禁用 activeX,这样它会给我与 Metro Ie10 相同的结果?
谢谢, 塔尔
【问题讨论】:
-
为什么要区分两者? Microsoft 建议应用程序应寻找功能而不是平台。例如,如果您的脚本在禁用 activeX 时执行某些操作,那么无论您是在 Metro 还是桌面上运行,如果禁用了 activeX,它都应该执行相同的操作。
-
由于许多原因,我需要区分它们... ActiveX 只是我发现区分两者的某种方式。问题是这行得通吗?这是识别我在哪个版本上工作的正确方法吗?
-
这就是重点。为什么需要区分?你能在这里给出一些理由吗?
-
@Tal 你找到解决方案了吗....我太感兴趣了
标签: javascript microsoft-metro activex internet-explorer-10