2016-09-19 89 views
0

我有2個HTML5小工具,這兩個小工具都是用Phaser.js製作的,並且具有圖像和音頻,它們通過移相器庫在飛行中加載。CORS與HTML5畫布問題,javascript

其中一個小部件(HTML5文件)在沒有XAMPP的情況下在本地文件系統上工作,而另一個僅在通過XAMPP服務器提供時才起作用。

我想知道爲什麼有些HTML5畫布文件在沒有服務器的情況下工作,而大多數時候我們需要一些服務器用於畫布文件。

對我來說這是一個很大的困惑。 Plz幫助。

+0

加載** R **資源時發生CORS問題** C ** ross ** O ** rigin和服務器不允許** R **資源爲** S ** hared - 如果從本地文件系統加載頁面,則本地文件系統** R **資源被認爲是相同** O ** rigin - 儘管如此,我認爲Chrome可能對此有不同的想法。歸結到這個......如何加載主頁面,** R ** esource如何加載 - 如果它們相同,那麼它應該沒問題,如果它們不同,那麼您需要CORS頭文件繼續 –

回答

2

還有就是爲什麼你需要在getting started page for Phaser.

它歸結web服務器很好的解釋是,你需要使用一個Web服務器,因爲:

這是與協議做用於訪問文件。當您通過網絡請求 時,您使用的是http,而服務器級別爲 的安全性足以確保您只能訪問您要使用 的文件。但是,當你通過本地文件系統 (技術上file://)加載文件時,它會受到大量限制,原因很明顯。在file://下沒有域的概念,沒有服務器級別的安全性,只是一個原始文件系統。

...

你的遊戲將需要加載資源:圖片,音頻文件, JSON數據,也許其他JavaScript文件。爲了做到這一點, 需要不受瀏覽器安全枷鎖阻礙。它需要 http://訪問遊戲文件。爲此,我們需要一個Web服務器。

從技術上講,沒有Web服務器,您的Phaser應用程序都不能運行,這很奇怪,您得到其中一個應用程序。

+0

這是一個了不起的部分,ONE phaser應用程序在本地運行沒有任何問題,而另一個不。兩者都具有幾乎相同的資產(音頻/ img)。不知道這是怎麼發生的。 :) – raju

0

在您的預加載代碼中設置game.load.crossOrigin = true,它應該可以工作。