【问题标题】:Firebase Synchronous XMLHttpRequest on the main thread is deprecated主线程上的 Firebase 同步 XMLHttpRequest 已弃用
【发布时间】:2015-09-16 11:46:03
【问题描述】:

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

在 iOS 上一切正常。

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

主线程上的同步 XMLHttpRequest 已被弃用,因为 其对最终用户体验的不利影响。如需更多帮助, 检查http://xhr.spec.whatwg.org/

每次我收到这个“警告” - 我的视图都不会加载。

发往/来自 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 查询都设置为 async true。 如果这只是一个“警告”,为什么页面会停止?

请注意,在 iOS 以及桌面上的 Chrome 和 Safari 上 - 一切正常。

【问题讨论】:

  • 警告可能与页面未加载无关。 XY Problem
  • 感谢@Kato - 当我发现它们时,将发布更多详细信息。同意,现在看起来很 XY-ish ;-)
  • 我的意思是,再三考虑,也许警告可能是相关的。它可能“对最终用户体验产生不利影响”:) 但我们在其他应用程序或客户端中没有看到这种情况。您使用的是最新版本的 SDK 吗?
  • 我有一个几乎为空的 ionic 项目,在 chrome 中,当我在控制器中调用 var ref = new Firebase("APP.firebaseio.com"); 时出现此错误。我安装了 bower install firebase。 Firebase.SDK_VERSION = '2.2.7';
  • 这里有同样的警告......因此我关于在网络 sorker 中运行 FB 的 SO 问题stackoverflow.com/questions/33520936/…

标签: javascript android cordova firebase


【解决方案1】:

在我的情况下,问题是由于按照 ionic-service-deploy 文档的建议注释掉了 cordova.js。

取消注释可确保 WS 与 Firebase 的顺畅连接。为什么会这样,我无法理解 - 但我已经通过在我的 index.html 中反复添加和删除包含进行测试,以便在 Android/4.4.4 设备上始终如一地重现效果。

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

【讨论】:

  • 您能否更具体地说明您取消注释和/或注释掉的代码行?
  • // 将此注释掉以便部署工作,但随后 XHTTP 问题将出现在 Android 4.4 上
猜你喜欢
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
相关资源
最近更新 更多