2012-12-14 77 views
3

我一直在尋找Firefox OS的打包應用程序,我依靠模擬器,因爲我沒有在設備上構建操作系統。我在XHR請求方面遇到了問題,我不確定問題是否是我忽略的設置,或者如果模擬器只是越野車。Firefox操作系統打包的應用程序和XMLHttpRequests

我對文檔的閱讀建議添加網絡-http的權限應足以使XHR請求到Web服務。我還在源代碼中看到了systemXHR權限。我已經嘗試過但目前爲止沒有快樂。我使用的是火狐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?

+0

編輯以指定我使用OSX。 – aerych

+0

我有機會在模擬器的Windows版本上嘗試此操作,並且XHR按預期工作。看來,OSX模擬器預覽只是越野車。 – aerych

+0

當你安裝你的應用程序時,你是否需要壓縮它並使用其他清單來使特權類型正常工作? – Macmee

回答

6

請注意,要使用systemXHR權限,您還需要在創建請求對象時傳遞特殊參數,例如,

var xhr = new XMLHttpRequest({mozSystem: true}); 
+0

是的,是的。我有,但仍然沒有喜樂。 – aerych

2

骨幹或其他JavaScript框架使用引擎蓋下使用jQuery $就:

$.ajaxSetup({ 
    xhr: function() {return new window.XMLHttpRequest({mozSystem: true});} 
}); 

我沒有認爲你需要使用CORS。我的應用在沒有CORS的模擬器中工作正常,但如果在本地服務器上啓動,則無法調用遠程REST服務器。

請注意,如果你忘了設置

數據類型:「文字」

一些$就調用(例如負載HTML模板),你可以得到的XMLDocument作爲,而結果桌面瀏覽器返回字符串。

0

爲了能夠在我的Firefox OS的應用程序CORS,我不得不啓用在應用manifest.webapp文件systemXHR權限:

"permissions": { 
    "systemXHR" : { 
     "description" : "Required to access remote api" 
    } 
} 
相關問題