【问题标题】:catch NS_ERROR_FAILIURE in Firefox在 Firefox 中捕获 NS_ERROR_FAILURE
【发布时间】:2015-08-26 02:23:35
【问题描述】:

我正在使用 Topaz 签名板并实现他们的新 AJAX 库。如果未安装/运行驱动程序/服务,我想在页面上显示警告。为此,脚本向域发出 get 请求,该域通过 hosts 文件重定向到 localhost。

如果服务正在运行,我会得到签名板的状态,一切都很好。但是,如果该服务未安装或未运行,我只会得到 NS_ERROR_FAILURE 并且脚本会停止,即使我在 try{code}catch(err){errorcode}

try {
    console.log('connect: ' + TabletConnectQuery());
}
catch(err){console.log('Caught ' + err);}

我的控制台只显示:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://tablet.sigwebtablet.com:47290/SigWeb/TabletState. (Reason: CORS request failed).    
Line 0
NS_ERROR_FAILURE: 
https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js line 2 > eval
Line 151

这特别麻烦,因为它发生在页面转换期间并停止动画停止。

【问题讨论】:

    标签: javascript xmlhttprequest try-catch cors


    【解决方案1】:

    我最终通过修改提供的 SigWebTablet.js 库 topaz 使其工作。

    改变了

    function SigWebGetProperty(prop) {
        var xhr = SigWebcreateXHR();
    
        if (xhr) {
            xhr.open("GET", baseUri + prop, false );
            xhr.send(null);
            if (xhr.readyState == 4 && xhr.status == 200) {
                return xhr.responseText;
            }
        }
        return "";
    }
    

    收件人:

    function SigWebGetProperty(prop) {
        var xhr = SigWebcreateXHR();
    
        if (xhr) {
            xhr.open("GET", baseUri + prop, false );
            try{
                xhr.send(null);
            }
            catch(err){
                return "";
            }
            if (xhr.readyState == 4 && xhr.status == 200) {
                return xhr.responseText;
            }
        }
        return "";
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      • 2011-01-11
      相关资源
      最近更新 更多