在Firefox中捕获NS_ERROR_FAILIURE

时间:2015-08-25 17:50:38

标签: javascript xmlhttprequest try-catch cors

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

如果服务正在运行,我会获得签名板的状态。一切都好。但是,如果服务未安装或未运行,我只是得到NS_ERROR_FAILURE并且脚本停止,即使我在try {code} catch(错误){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

这在页面转换期间发生时特别麻烦。停止动画死。

1 个答案:

答案 0 :(得分:0)

我最终通过修改提供的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 "";
}