簡體   English   中英

與contentscript的Chrome擴展程序中注入的ember.js沖突

[英]Conflicts with injected ember.js in contentscript's chrome extension

我正在創建一個Chrome擴展程序,並且想在其中使用ember.js。 我只是創建了一個非常基本的網站,該網站適用於大多數網站,但不適用於gmail或feedly等網站。 在這些網站上,我收到如下錯誤:

斷言失敗:找不到路線my ember-1.0.0-rc.7.js:364(匿名函數)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個文件夾,並在其中和chrome://中添加ember-1.0.0-rc.7.js,handlebars-1.0.0.js和jquery-1.9.1.js。擴展程序添加帶有“加載解壓縮擴展程序...”的文件夾

謝謝

盡管內容腳本的Javascript執行環境與網頁的Javascript執行環境是隔離的,但是它們共享同一文檔。 特別是,它們共享當前URL。

默認情況下, ember.js使用URL的哈希部分來確定應遵循的應用程序路由。

從您發布的錯誤消息看來,您似乎正在訪問以下URL: http://cloud.feedly.com/#my : http://cloud.feedly.com/#my ,這就是為什么您收到錯誤消息“找不到我的路線”的原因。

根據您的應用程序,您可以嘗試禁用路由器和URL之間的交互,如下所述: 指定URL類型

App.Router.reopen({
  location: 'none'
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM