【问题标题】:How do I detect if ActiveX is enabled in the browser of client?如何检测客户端浏览器中是否启用了 ActiveX?
【发布时间】:2020-11-11 22:56:37
【问题描述】:

如何检测客户端浏览器是否启用了ActiveX?

我尝试了以下代码,但它在 Firefox 中不起作用。

window.ActiveXObject not working in Firefox

有什么想法吗?

在此处查看示例:http://jsfiddle.net/qXSvQ/2/

当我运行这个示例时,我得到了false

【问题讨论】:

    标签: javascript activex


    【解决方案1】:

    ActiveX 对象只存在于 Internet Explorer 中。如果您尝试将它们用于 XMLHTTPRequests,请改用 XMLHTTPRequest() 对象,使用特征检测。

    if ("ActiveXObject" in window) { /* Do ActiveX Stuff */ }
    else { /* ActiveX doesnt exist, use something else */ }
    

    【讨论】:

    • 这在 IE11 和 Chrome 中运行良好,不像 window.ActiveXObject(总是返回“未定义”)
    【解决方案2】:

    什么不工作?这会在FF中引发错误吗?怎么样

    var hasAX = "ActiveXObject" in window;

    【讨论】:

    • 不,我在 Firefox 和 chrome 中得到了错误。见jsfiddle.net/qXSvQ/2
    • @twesh 它应该在 Firefox 和 Chrome 中返回 false; FireFox 和 Chrome 都不支持 ActiveX。您正在运行代码以确定 FireFox 或 Chrome 是否支持 ActiveX。由于 FireFox 或 Chrome 都不支持 ActiveX,因此该函数应返回 false。在 FireFox 和 Chrome 中测试实际代码,它正确返回 false。答案中是否缺少某些内容?
    【解决方案3】:

    下面的代码应该可以工作,它至少在 IE6 和 FF 3.6.12 上工作。

    if(typeof(window.ActiveXObject)=="undefined"){
        alert("ActiveX Object not supported");
    }else {
        alert("ActiveX Object  supported");
    }
    

    【讨论】:

    • 它在IE 中工作正常,但在 Firefox 中它是未定义的。我已经检查过FF 3.6.12FF 4.0b7
    • @twesh,未定义很好,FF 不支持 ActiveX。即使在上面的代码中,我也只将它与“未定义”进行了比较。
    • 那么有什么变通方法可以检查是否在 FF 浏览器中启用了 ActiveX?
    • @twesh - Firefox 从不 支持 ActiveX。正如 Chinmayee 所说,Firefox 将始终返回 undefined。如果您希望 FF 支持它,也许您的意思不是 ActiveX?
    • 实际上我需要检查是否启用了 ActiveX 以进行跟踪。谷歌分析如何检测 ActiveX?
    【解决方案4】:

    似乎 Firefox 只是跳过了包含 ActiveX 对象的脚本:

    <script><!--
      var activeXsupport = "ActiveX not supported";
    // --></script>
    
    <script><!--
      var dummy = new ActiveXObject ('WScript.Shell');
      activeXsupport = "ActiveX supported";
    // --></script>
    
    <script><!--
      alert (activeXsupport);
    // --></script>    
    

    所以这让我在 IE11 上“受支持”而在 Firefox 上“不支持”。

    [Edit:] 因为如果使用 [F12] 打开控制台也会在 Firefox 上抛出错误消息,我建议进行此改进:

    <script><!--   
      var dummy = ''; var hasActiveX = false;  
      try {dummy = new ActiveXObject ('WScript.Shell'); hasActiveX = true;}
      catch (err) {dummy = ''; hasActiveX = false;}
      alert ('hasActiveX = ' + hasActiveX);
    // --></script>   
    

    如果 Edge Chromium 在设置中设为默认浏览器并启用通过“更多工具”在 Internet Explorer 模式下重新加载,则支持 ActiveX:

    edge://settings/defaultBrowser 
    

    杰罗夫

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      相关资源
      最近更新 更多