2016-07-15 11 views
0

私は特別なhtmlを持つボタンをクリックすると新しいタブを開くアドオンに取り組んでいます。今、htmlファイルは専用のウェブスペースにありますが、そのための回避策があります。つまり、htmlファイルをアドオン自体のデータ構造に入れ、そこからアクセスできますか?問題は、URLを連結してボタンをクリックしたときにアクティブなサイトのURLを配信し、そのHTML内で問題と思われるAngularJSを使用しています。firefoxアドオンでhtmlファイルにアクセス

マイコード:

index.js:

var { ActionButton } = require("sdk/ui/button/action"); 
var tabs = require("sdk/tabs"); 
var data = require("sdk/self").data; 

var button = ActionButton({ 
    id: "my-button", 
    label: "Start LLIBrowser", 
    icon: { 
    "16": "./img/logo-16.png" 
    }, 
    onClick: showPlugIn 
}); 

function showPlugIn(state){ 
    let currUrl = tabs.activeTab.url; 
    //var file = "file:///home/janine/OneDrive/Uni/OvGU/4. Semester/SoftwareProjekt/LLIBrowserGalleryAndInfo/data/overlay.html"; just for testing 
    var file = "http://www-e.uni-magdeburg.de/jpolster/LLIBrowser/overlay.html"; 
    var completePath = file.concat("?url=").concat(currUrl); 

    tabs.open(completePath) 
} 

任意のアイデア?

乾杯!

答えて

2

理論的には問題はありません。 あなたのデータフォルダにHTMLファイルを置き、アクセスを通じ:

は編集
var file = data.url("overlay.html"); 

:M.Onyshchukこれは

アドレスをトリガするという正しいですが、有効ではありません

エラーです。私は ":"とは思わなかった。これを修正するには、URLからプロトコル情報を削除するだけです。

currUrl = currUrl.replace(/^https?\:\/\//i, ""); 

アドオン内でAngularJSを引き続き使用するには、現在のバージョンをアドオンで簡単に出荷するのが最も簡単な方法です。最新のバージョンをダウンロードしてデータフォルダに置き、通常の方法でHTMLファイルにアクセスしてください。

私はAngularJSに精通していませんが、これはうまくいかない理由は考えられません。

あなたのプロジェクトに幸運を祈る!

Sintho

1

ファイルの読み込みURIを変更するには十分ではありません。

var file = data.url("overlay.html"); 

アドレスが有効

ないとしてあなたは、この場合にはエラーが表示されます。

あなたのコードを変更して、現在のタブのURLをクワイアではなく送信することができますERYのURIの一部が、フラグメントの一部として:

let currUrl = tabs.activeTab.url; 
    currUrl = currUrl.replace(":", "%"); 
    var file = data.url("overlay.html"); 
    var completePath = file.concat("#").concat(currUrl); 

残念ながらencodeURIComponentでは動作しません:

let currUrl = encodeURIComponent(tabs.activeTab.url); // The address isn't valid 

あなたはoverlay.html

に(#の後に)解析フラグメントURIが必要になります
関連する問題