1

我創建了一個擴展插件,我想在其中使用ember.js。我只是創建了一個非常基本的網站,可以與大多數網站一起使用,但不能與gmail或feedly等網站一起使用。與這些網站,我得到這樣的錯誤:在contentscript的擴展中插入ember.js衝突

斷言失敗:這條路線我沒有發現灰燼-1.0.0-rc.7.js:364 (匿名函數)燼-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.didBeco meReady 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 completed

你有想法如何解決這個問題嗎? 分離的內容腳本運行(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檔波紋管,並添加燼-1.0.0-RC .7.js,handlebars-1.0.0.js和jquery-1.9.1.js在它和chrome:// extensions中添加文件夾「Load unpack extension ...」

謝謝

+0

在某些情況下,路由可能是一個問題。當有自己的路由器時,可能會出現這種錯誤... – thecodejack

回答

1

儘管內容腳本的Javascript執行環境與網頁的執行環境是分開的,但它們共享相同的文檔。特別是他們共享當前的URL。

默認情況下,ember.js使用URL的散列部分來確定它應遵循哪個應用程序路線。

從錯誤消息您發佈它似乎你訪問這個URL:http://cloud.feedly.com/#my,這就是爲什麼你得到了錯誤「我未找到路線」。

根據您的應用程序,您可以嘗試禁用路由器和URL之間的相互作用,如下所述:Specifying the URL Type

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