Backbone.jsを使用するサイトのブラウザー拡張機能を作成しています。その関連コードは次のようになります(無実を保護するために名前が変更されています)。
var BigContainer = BigContainer || {};
(function($, exports) {
var Thing = Backbone.View.extend({
...
useful_func: function() {
// Does something I need to call
},
...
});
(function($, exports) {
BigContainer.BaseView = Backbone.View.extend({
...
render: function() {
this.local_thing = new Thing({
el: '.local_thing'
});
}
...
});
また、拡張機能の挿入されたjavascriptファイルからの呼び出しを<script>
リッスンするために、ブロックにコードを挿入しています。postMessage()
そこから電話をかけたいのですuseful_func
が、どうすればいいのか、どうしたらいいのかわからない(そうでない場合は、どうすれば同じ結果にたどり着くことができるのか)。
例として、私は次の参照を試しましたが、それらはすべて未定義として表示されます。
BigContainer.BaseView.$local_thing
BigContainer.BaseView.local_thing
Thing
document.getElementsByClassName('local_thing')[0].useful_func
重要なのは、自分が所有していないサイトの拡張機能を作成しているため、サイトのBackbone.jsコードを変更して自分自身を助けることができないということです。私はそこにあるもので作業する必要があります。