0

尝试使用 Ratchet 的 push.js,但不起作用。我在控制台中有什么:

[Error] Error: Could not get: file:///var/mobile/Applications/337585D8-89E1-4810-AB37-0A6DD2DA3A34/Gustav.app/www/booking.html
failure (ratchet.js, line 446)
onreadystatechange (ratchet.js, line 371)

如果您点击链接十次,您将开始收到以下信息:

[Error] TypeError: 'undefined' is not an object (evaluating 'cacheMapping[PUSH.id].url')
cachePush (ratchet.js, line 202)
PUSH (ratchet.js, line 392)
touchend (ratchet.js, line 258)

所有这些来自真实设备测试(iOS 7.1)的控制台数据,包装器是 Cordova CLI 3.4.1-0.1.0。

文件 booking.html 存在,像这样的原生 safari 失败

[Error] Failed to load resource: The requested URL was not found on this server. (menu.html, line 0)

没有出现。

4

1 回答 1

2

push.js不支持 file:// 协议。

Ratchet 使用 XHR 请求来获取应用程序内的其他页面。出于安全考虑,现代浏览器在本地打开文件时会阻止 XHR 请求(也就是使用 file:// 协议);因此,当直接作为文件打开时,Ratchet 不起作用。一个常见的解决方案是简单地从本地服务器提供文件。实现此目的的一种便捷方法是运行 python -m SimpleHTTPServer 以将当前目录中的文件提供给http://localhost:<port>

另请参阅此问题以及在 Github 上提交的此问题

这似乎是使用 Cordova 和 Ratchet 的常见问题。

于 2014-04-25T17:09:32.090 回答