1

Chrome 拡張機能を作成していますが、内部で ember.js を使用したいと考えています。私は非常に基本的なものを作成しましたが、これはほとんどの Web サイトで正常に機能しますが、gmail や feedly などの Web サイトでは機能しません。これらの Web サイトでは、次のようなエラーが発生します。

アサーションに失敗しました: The route my was not found ember-1.0.0-rc.7.js:364 (anonymous function) ember-1.0.0-rc.7.js:364 Ember.assert ember-1.0.0-rc. 7.js:52 Ember.Router.Ember.Object.extend._doTransition ember-1.0.0-rc.7.js:26488 Ember.Router.Ember.Object.extend.handleURL ember-1.0.0-rc.7. js:26331 Ember.Router.Ember.Object.extend.startRouting ember-1.0.0-rc.7.js:26312 Ember.Application.Ember.Namespace.extend.startRouting ember-1.0.0-rc.7.js: 30234 Ember.Application.Ember.Namespace.extend.didBecomeReady ember-1.0.0-rc.7.js:30192 DeferredActionQueues.flush ember-1.0.0-rc.7.js:4746 Backburner.end ember-1.0.0- rc.7.js:4830 Backburner.run ember-1.0.0-rc.7.js:4869 Ember.run ember-1.0.0-rc.7.js:5200 (無名関数) ember-1.0.0-rc .7.js:29937 jQuery.Callbacks.fire jquery-1.9.1.js:1037 jQuery.Callbacks.self.fireWith jquery-1.9.1.js:1148 jQuery.extend.ready jquery-1.9.1.js:433 完了

それを解決する方法を考えていますか?コンテンツ スクリプトは分離して実行されます ( https://developer.chrome.com/extensions/content_scripts.html#execution-environment ); すべてのイベントをキャッチする ember.js のルーティング ルーチンのようですが、私は何が起こったのかを理解するのに十分なスキルがありません。

私の manifest.json :

{
  "name": "Ember module test",
  "version": "1.0",
  "manifest_version": 2,
  "description": "The first extension that I made ;)",
   "permissions": [ "tabs", "cookies", "\u003Call_urls\u003E", "https://accounts.google.com/o/oauth2/token", "pageCapture" ],
   "content_scripts": [ {
      "js": [ "jquery-1.9.1.js", "handlebars-1.0.0.js", "ember-1.0.0-rc.7.js", "contentScript.js" ],
      "matches": [ "http://*/*", "https://*/*" ],
      "run_at": "document_end"
   } ]

}

私の contentScript.js:

var wrapperHTML = '                      <script type=\"text/x-handlebars\">    <h2>Title</h2>    {{outlet}}  </script>  <script type=\"text/x-handlebars\" data-template-name=\"index\">    {{#each item in model}}      <li>{{item}}</li>    {{/each}}    </ul>  </script>';

function initWrapperHTML() {
        var newNode = document.createElement("div");
        document.body.appendChild(newNode);
        newNode.innerHTML += wrapperHTML;
}
initWrapperHTML();

AppEmber = Ember.Application.create();

AppEmber.Router.map(function() {
  // put your routes here
});

AppEmber.IndexRoute = Ember.Route.extend({
  model: function() {
    return ['red', 'yellow', 'blue', 'emberorange'];
  }
});

私の問題を再現するには、次の 2 つのファイルを含むフォルダーを作成し、ember-1.0.0-rc.7.js、handlebars-1.0.0.js、および jquery-1.9.1.js をそのフォルダーと chrome:// に追加します。拡張機能は、「Load unpack extension...」でフォルダーを追加します

ありがとうございました

4

1 に答える 1

1

コンテンツ スクリプトの Javascript 実行環境は、Web ページの Javascript 実行環境から分離されていますが、同じドキュメントを共有しています。特に、現在の URL を共有しています。

デフォルトでember.jsは、URL のハッシュ部分を使用して、どのアプリケーション ルートに従うべきかを確立します。

あなたが投稿したエラー メッセージから、あなたはこの URL にアクセスしていたようですhttp://cloud.feedly.com/#my:

アプリケーションによっては、URL タイプの指定 で説明されているように、ルーターと URL の間の対話を無効にしてみてください。

App.Router.reopen({
  location: 'none'
});
于 2013-08-29T20:41:32.293 に答える