Javascript PhoneGap/Cordova+中的XHR失败;安卓4.1/4.2+;三星硬件
在下面的JavaScript中,当在运行Android 4.1和Android 4.2的三星硬件上的PhoneGap/Cordova应用程序中使用时,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
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>