Javascript PhoneGap/Cordova+中的XHR失败;安卓4.1/4.2+;三星硬件

Javascript PhoneGap/Cordova+中的XHR失败;安卓4.1/4.2+;三星硬件,javascript,android,cordova,xmlhttprequest,samsung-mobile,Javascript,Android,Cordova,Xmlhttprequest,Samsung Mobile,在下面的JavaScript中,当在运行Android 4.1和Android 4.2的三星硬件上的PhoneGap/Cordova应用程序中使用时,reqListener回调(用于XHR调用)从不运行。它在Android 2.x和iOS中运行良好。我做错了什么?(我希望这是显而易见的。如果这意味着得到修复,我觉得自己很愚蠢也没关系。) 演示此问题的应用程序的完整源代码(如果您想查看config.xml或在PhoneGap上构建它以查看它是否适合您自己)位于。除了index.html和confi

在下面的JavaScript中,当在运行Android 4.1和Android 4.2的三星硬件上的PhoneGap/Cordova应用程序中使用时,
reqListener
回调(用于XHR调用)从不运行。它在Android 2.x和iOS中运行良好。我做错了什么?(我希望这是显而易见的。如果这意味着得到修复,我觉得自己很愚蠢也没关系。)


演示此问题的应用程序的完整源代码(如果您想查看
config.xml
或在PhoneGap上构建它以查看它是否适合您自己)位于。除了
index.html
config.xml

之外,它都是库存产品。我将我的实现与ZeptoJS所做的进行了比较,并将其修改为下面的代码,该代码现在可以与之前失败的Galaxy S4+PhoneGap组合使用

我认为成功的部分是:

  • 避免
    onload
    而改用
    onreadystatechange
  • readystatechange回调在readyState为4时启动后手动取消设置
现在是代码:

<title>Simple XHR Test</title>

<h1>Simple XHR Test</h1>
<p id="results">Running the simple XHR test...</p>

<script>
function reqListener (resultText) {
    var resultElement = document.getElementById('results');
    if ("textContent" in resultElement) {
        resultElement.textContent = resultText;
    } else {
        resultElement.innerText = resultText;
    }
};

var oReq = new window.XMLHttpRequest();
oReq.onreadystatechange = function () {
    if (oReq.readyState === 4) {
        oReq.onreadystatechange = function () {};
        reqListener(oReq.responseText);
    }
}
oReq.open('GET', 'http://apis.ucsf.edu/shuttle/stops');
oReq.send(null);
</script>
简单XHR测试
简单XHR测试
运行简单的XHR测试

函数reqListener(resultText){ var resultElement=document.getElementById('results'); 如果(resultElement中的“文本内容”){ resultElement.textContent=resultText; }否则{ resultElement.innerText=resultText; } }; var oReq=newwindow.XMLHttpRequest(); oReq.onreadystatechange=函数(){ if(oReq.readyState==4){ oReq.onreadystatechange=函数(){}; 请求侦听器(oReq.responseText); } } oReq.open('GET','http://apis.ucsf.edu/shuttle/stops'); oReq.send(空);
<title>Simple XHR Test</title>

<h1>Simple XHR Test</h1>
<p id="results">Running the simple XHR test...</p>

<script>
function reqListener (resultText) {
    var resultElement = document.getElementById('results');
    if ("textContent" in resultElement) {
        resultElement.textContent = resultText;
    } else {
        resultElement.innerText = resultText;
    }
};

var oReq = new window.XMLHttpRequest();
oReq.onreadystatechange = function () {
    if (oReq.readyState === 4) {
        oReq.onreadystatechange = function () {};
        reqListener(oReq.responseText);
    }
}
oReq.open('GET', 'http://apis.ucsf.edu/shuttle/stops');
oReq.send(null);
</script>