我想检测用户何时使用IE10。
我已经搜索了相当多的网络,我发现没有100%的方法可以找出(使用代码)用户是运行在IE10地铁风格还是桌面风格。然后我找到了一些站点,其中有一个检测activeX的记录。
,这是否足以检测麦德龙和桌面?
守则如下:
<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没有安装“。在火狐中,我得到:"MyActiveX没有安装“。我会得到同样的结果在IE10地铁风格吗?如果在地铁里跑,这个能帮我们查清楚吗?
如果这是不正确的,并没有办法区分他们,那么我如何完全模仿地铁风格的IE10桌面?我如何完全禁用activeX,以便它将给我相同的结果,地铁Ie10?
谢谢你,塔尔
发布于 2013-02-25 08:52:44
在爬行web以确定我的IE10是以桌面还是地铁版本运行的解决方案后,我最后在以下功能中对所有这些进行了总结:
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;}
不幸的是,没有完全确定的可能性.但首先,我检查了msPointerEnabled,以及(但这不是必需的)是否至少有两个“接触点”可用。由于我的脚本将不同的触摸和鼠标版本,我需要这个检查-你可以简单地忽略这一点。
但是,正如许多人建议的那样,由于IE10也支持msPointerEnabled,所以我使用了平台字符串.与CPU结合,因为MS Surface运行一个手臂。最后两点: ActiveX和决议.
但不幸的是,即使是所有这些点都可以用触控台式机/笔记本电脑模拟,如果你想.到目前为止,很难获得桌面IE10,但也不是不可能。
如果MS能实现一个简单的属性,告诉您是否触摸,以及桌面或地铁,我会很高兴的。但他们没有。
希望我的密码能帮到你?
发布于 2013-05-02 21:17:41
IE10地铁和IE10桌面版本的功能几乎是相同的(IE10桌面支持插件,而IE10 metro不支持)。如果你想让用户使用桌面版本,并且他们是在地铁版本,最好的方式是指示他们使用桌面版本。考虑到用户在IE10地铁版本中使用IE10桌面版本的情况,他可以在导航栏中点击2下打开桌面版本.这将是最好的方法

发布于 2013-06-11 10:02:33
根据TomažŠčavničar的回答,如果这有帮助的话,您似乎可以强迫用户使用桌面版本。
这篇文章有更多的信息:
https://stackoverflow.com/questions/12236867
复制相似问题