我一直在研究Firefox OS的套装应用程序,我依赖模拟器,因为我没有在设备上构建操作系统。我在处理XHR请求时遇到了问题,我不确定这个问题是因为我忽略了设置,还是模拟器有问题。
我对文档的阅读表明,添加network-http的权限应该足以向web服务发出XHR请求。我还在源代码中看到了systemXHR权限。两个我都试过了,但到目前为止还没有,joy。我正在使用Firefox for OS X的模拟器,我的清单如下所示:
清单:
{
"version": "0.1",
"name": "Hello World",
"description": "A hello world app.",
"launch_path": "/app/index.html",
"icons": {
"16": "/app/img/icons/mortar-16.png",
"48": "/app/img/icons/mortar-48.png",
"128": "/app/img/icons/mortar-128.png"
},
"installs_allowed_from": ["*"],
"permissions": {
"systemXHR": {},
"network-http": {},
"network-tcp": {}
},
"type": "privileged"
}已经回答了一个similar question,但我认为答案可能是针对web应用程序的,而不是打包的应用程序,一个例子无论如何都会有帮助。
我是否遗漏了一些明显的东西,是模拟器坏了,还是打包的应用程序需要CORS?
发布于 2012-12-14 23:47:23
请注意,要使用systemXHR权限,您还需要在创建请求对象时传递一个特殊参数,例如
var xhr = new XMLHttpRequest({mozSystem: true});发布于 2013-09-25 19:02:23
对于Backbone或其他在幕后使用JQuery $.ajax的Javascript框架,请使用:
$.ajaxSetup( {
xhr: function() {return new window.XMLHttpRequest({mozSystem: true});}
});我不认为你需要使用CORS。我的应用程序在没有CORS的模拟器中工作正常,但如果在本地服务器上启动,则无法调用远程REST服务器。
请注意,如果您忘记设置
dataType:“文本”
对于某些$.ajax调用(例如,load html template),您可以获得XMLDocument作为结果,而桌面浏览器则返回string。
发布于 2013-03-06 00:05:02
看看Rob Nyman样板文件,他有一个工作的XHR演示
https://github.com/robnyman/Firefox-OS-Boilerplate-App
http://robnyman.github.com/Firefox-OS-Boilerplate-App/
https://stackoverflow.com/questions/13873025
复制相似问题