2012-11-13 67 views
5

我一直在使用Require.js和Backbone.js等。我一直在試圖製作一個簡單的待辦事項應用程序,我通過雙擊桌面上的index.html並在瀏覽器中顯示它並使用它。Require.js模板「只有HTTP支持跨域請求」錯誤

然而,Require.js取出一個模板時,它給我下面的錯誤:

XMLHttpRequest cannot load file:///C:/bada/js/templates/headerTemplate.html. Cross origin requests are only supported for HTTP. 

我知道這是發生,因爲我沒有做從服務器的請求。我知道在Chrome中,這個錯誤可以通過在啓動Chrome時使用一些參數來抑制,但我也打算通過在本地運行index.html在我的手機上使用此應用程序。

無論如何,以防止這種錯誤發生,讓應用程序工作正常嗎?

回答

1

簡答:沒有。

較長的答案:查看應用程序緩存。

不要在您的應用程序完成構建之前執行此操作。但是在建立之後,如果您設置了脫機緩存並利用localStorage(如果需要),它應該在最受歡迎的手機/平板電腦/筆記本電腦/ PC上運行。

但就像我說的,請勿設置您的緩存清單,直到你準備凍結你所有的文件數據,因爲它是。
它在緩存數據方面做得非常好,這很好......但是如果你對任何文件進行了更改,那麼使用緩存來使下載最新版本失效,重置緩存變得非常痛苦新東西...

...如果你喜歡每5分鐘擊打CTRL + S,就像我一樣,只是爲了安全... ...那麼如果你想要頭痛的話看到行動中的微觀變化。

+0

嗯,這是一個downer。我非常希望能得到解決方案。將研究緩存的事情,否則只是推動主html文件中的所有模板-_- – Hirvesh

+2

順便說一句,爲什麼沒有問題Require.js加載JavaScript模塊文件(.js文件),但加載時遇到問題HTML一個? – Hirvesh

+3

要求創建一個腳本元素,將src設置爲模塊的js文件。使用HTML模板,它使用Ajax加載它們(使用文本!插件) –

2

使用谷歌瀏覽器,你可以通過使用標誌--allow-file-access-from-files來做到這一點。這樣它可以訪問你的本地文件系統。

我建議更改Chrome圖標的屬性並默認啓用標誌。其他瀏覽器可能有類似的東西,但我不知道。