javascript - 主线程上的 Firebase 同步 XMLHttpRequest 已弃用

标签 javascript android cordova firebase

我正在开发 phonegap/cordova ionic 应用程序。我正在 iOS 和 Android 上进行测试。

在 iOS 上一切正常。

但是在 Android 上,当我的一个 View 加载时我收到以下消息:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

每次我收到此“警告”时 - 我的 View 都不会加载。

发往/发自 firebase 的 .lp?dframe=t&id=...&pw=... 查询之一具有以下内容:

<html><body><script>
function EnvSendPing(destURL) {
try{
var xhr=new XMLHttpRequest();
xhr.open("GET", destURL, false);
xhr.send(null);
} catch (e) { }
}
function EnvDisconnect() {
EnvSendPing("/.lp?disconn=t&id=294802&pw=LL8E8eo2Rz");
}
if(window.addEventListener)
window.addEventListener('unload',EnvDisconnect,false);
else if(window.attachEvent)
window.attachEvent('onunload',EnvDisconnect);
</script></body></html>

这显然将 xhr 设置为异步“false”——导致此“警告”。

有没有一种方法可以强制所有 Firebase 查询异步为真。 如果这只是一个“警告”,为什么页面会停止?

请注意,在 iOS 和桌面上的 Chrome 和 Safari 上 - 一切都按预期工作。

最佳答案

在我的例子中,问题是由于 ionic-service-deploy 文档所建议的对 cordova.js 的注释。

取消注释,确保 WS 与 Firebase 的平滑连接。为什么它应该是这样超出了我的范围 - 但我已经通过反复添加和删除我的 index.html 中的包含进行了测试,以便在 Android/4.4.4 设备上始终如一地再现效果。

希望这对其他人有帮助 - 我花了很多时间才发现这一点!

关于javascript - 主线程上的 Firebase 同步 XMLHttpRequest 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31125403/

相关文章:

javascript - 如何将字符串和函数参数混合到一个变量中

java - 在 android 中使用 php-cgi 和网络服务器

jquery - 如何让我的应用程序在动画期间不挂起?

mysql - SQL从多对多+phonegap中选择

android - Cordova 运行安卓 : ANDROID_HOME not set and android not in my path

javascript - 3 级嵌套 View 结合选项卡导航和侧边菜单导航与 ionic 框架

c# - <head> 和 <asp :Content ID ="HeaderContent" . ..> 有什么区别?

javascript - addEventListener 方法的第二个参数不能加括号

java - 方法中的线程逻辑

android - SearchView.isFocused 总是返回 false