2012年4月10日火曜日

DartEditor で less を使う

less の javascript ファイルを読み込んで動的に css に変換する場合、その script タグが書かれている html ファイルに file:///... でアクセスすると Chromium や Chrome ではうまくうごきません。

css - less.js not working in chrome - Stack Overflow -

これは Chrome のセッキュリティ機能の1つで、ローカルの javascript ファイル読み込むときに起こる問題として知られているものです。

--allow-file-access-from-files フラグをつけて Chromium や Chrome を起動すれば less の javascript ファイルが正しく動きます。
List of Chromium Command Line Switches

Dart のアプリケーションで less を使いたい場合、デフォルトで Dartium (Chromium をベースにしている) が起動するので、上記と同じ問題が起こります。

そこで、Dartium を起動するときに --allow-file-access-from-files フラグをつけられればいいということになります。

Dart アプリケーションの起動は、DartEditor の [Tools] - [Manage Launches...] でカスタマイズできます。
  • Dartium Launch ではフラグも設定できないし、起動するブラウザも指定できません(=ショートカットとか作れない)
  • Dart Web Launch ではフラグは設定できませんが、起動するブラウザを指定できます。さらに指定されたブラウザがすでに起動している場合は、新しいタブで実行されます。


Dartium Launch


Dart Web Launch


そのため、
  • 1. DartEditor の起動設定で dark-sdk 内の Chromium を起動する Dart Web Launch を作っておく(起動ターゲットは less を使った Dart アプリケーション)
  • 2. コンソールから --allow-file-access-from-files をつけて dart-sdk 内の Chromium を起動する
  • 3. DartEditor から less を使った Dart アプリケーションを 1. の Dart Web Launch で起動する

これで DartEditor で作成しているローカルの Dart アプリケーションで less が動くようになります。

*アプリ毎に Dart Web Launch 作るのは面倒なので、デフォルトの Dartium に flag 指定できるようにならないかなー。。。



1 件のコメント:

  1. 自分の環境だと、DartEditorからのDartiumでの実行時に、自動でローカルサーバーが立ち、そこにアクセス形で実行されます。
    なので、--allow-file-access-from-filesの指定無しでもXMLHttpRequestでデータ取得ができるようになり喜びました。

    返信削除