現象
ローカルで作成中の HTMLファイル(JavaScriptつき)をテスト実行しようとしたら、Google Chromeで表示してくれない。
- [確認] ChromeのJavaScriptコンソールを開いてみる
XMLHttpRequest cannot load file:///(中略). Origin null is not allowed by Access-Control-Allow-Origin.
とエラー表示されている
解決法
Chrome の起動時に --allow-file-access-from-files というオプションをつける。
これを実現させる具体的な手順が思いつく人はここで読了です。
筆者は、Mac OS X上でいつも Dock からChrome を立ち上げているので、その手順はそのままに上記を実現したい人です。
ということで、以下そのやり方を記します。
Mac OS X でアイコンのダブルクリックで上記を実行する準備
- Chrome を終了する
- Mac にプリインストールされている AppleScript エディタを起動する
- 下記のシェルコマンドを入力し、「実行」ボタンを押してみる
do shell script "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --allow-file-access-from-files"
→これが正しくできていれば、次の2点を確認できる
- Chrome が立ち上がる
- 開きたかった JSつきHTMLファイルをそのChromeで読み込んでみて、JSが実行されている
- AppleScript エディタに戻り、ファイル>保存で「アプリケーション」フォーマットで保存する。名前は自分がわかるものなら何でもいいけれど、例えば Google Chrome JS.app とか。
- 保存した .app をアプリケーションフォルダに入れる。Dock を使っている人は、従来の Google Chrome.app を 4) と入れ替える。
- 完了。あとは Google Chrome JS.app をクリックして起動してください。
ちょっと残念なこと(保留事項)
- アイコンがJSデフォルトになるのが少々気に食わない
- オリジナルの Google Chrome.app アプリも同時に立ち上がるので Dock の起動中アイコンが従来より1コ増える
Google Chrome JS.app のアイコンを入れ替えられれば少しはいいかな?でもすぐにはわからなかったのでとりあえず置いておく。