2016-11-30 8 views
0

私はFirefoxアドオンを構築しています。設定ページのボタンをクリックすると、Add - 保存しました。これを行う最善の方法は何ですか?Firefoxアドオンからhtmlページを開くにはどうすればいいですか

私はこれを作ってみた:

function ShowList() { 

// We get the array from the local storage. 

    function createList(item){ 
    var list = []; 
    // Get the stored list, if there's any. 
    if (item[0].list){ 
     list = item[0].list; 
    } 
    } 
    function onError(e) { 
    alert("Error:" + e); 
    } 
    browser.storage.local.get("list").then(createList, onError); 

// Once we have the list, build an HTML string with its contents 

    var listhtml = ['<!DOCTYPE html>', 
      '<html>', 
      ' <head>', 
      '  <meta charset="utf-8">', 
      ' </head>', 
      ' <body>', 
      '  <ul>'].join("\n"); 

    for (var w= 0; w < list.length ; w++) { 
    listhtml += '   <il>' + list[w][0] + '</il>\n'; 
    } 
    listhtml += ['  </ul>', 
     ' </body>', 
     '</html>'].join("\n"); 
    var oMyBlob = new Blob([listhtml], {type : 'text/html'}); // the blob 
    window.open(URL.createObjectURL(oMyBlob)); 
} 

が、HTMLは、文字列内で、かなりひどい見えます。助言がありますか?

+0

[種類のFirefox拡張機能](https://developer.mozilla.org/en-US/Add-ons)はあなたが作成しています([WebExtensions](https://developer.mozilla.org/en-US)/Add-ons/WebExtensions)[[tag:firefox-webextensions]]、[アドオンSDK](https://developer.mozilla.org/en-US/Add-ons/SDK)[[タグ:fiirefox- addon-sdk]]、[Bootstraped](https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions)[[tag:firefox-addon-restartless]]、または[Overlay/XUL/Legacy] (https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions)[[tag:fiirefox-addon-overlay]]/[[tag:xul]])?あなたの質問に適切なタグを[編集]してください。 – Makyen

+0

これはWebExtensionのようです。その場合は、適切なタグを追加してください。 – Makyen

+0

問題を重複している** complete ** [mcve]を含めてトピック上にある質問を編集してください。 * manifest.json *、背景*および*コンテンツスクリプトの一部を含む。デバッグの助けを求める質問(「**なぜこのコードは動作しないのですか?**」)には、以下が含まれていなければなりません:►必要な動作、►特定の問題またはエラー*、および►問題を再現するのに必要な最短コード自体**。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください: "**どのように[mcve] **を作成するか"、[ここで私はどんな話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask] – Makyen

答えて

2

通常、拡張ディレクトリ内に結果ページ(例:results.html)があります。これには基本的なHTMLフレームワークと、ページに含まれるCSSとスクリプトが含まれます。ページのDOMが開いたら、動的に変更することができます。

あなたがバックグラウンドページにいる場合、またはコンテンツスクリプトが質問に記載されていない場合。バックグラウンドページからこれを実行していると仮定すると、Show HTML file contained within the extensionの情報に基づいてresults.htmlを開くことができます。その答えは、現在のタブ、新しいタブ、または新しいウィンドウでページを開くためのコードを提供します。

+0

"あなたがバックグラウンドページにいる場合、またはコンテンツスクリプトが質問に記載されていない場合は、私はオプションページにいます。私はそれを理解しているので、それはバックグラウンドページまたはコンテンツスクリプトとは異なりますか? – carllacan

+0

ありがとう、これは文字列にHTMLのチャンクを持つよりもはるかにエレガントです。しかし、結果ページに保存されたリストを表示するにはどうすればよいですか?私はresults.html javascriptからストアド・リストにアクセスしようとしましたが、動作しません。新しいタブのIDを取得して接続し、JSONでリストを渡す必要がありますか? – carllacan

+1

@carllacan、オプションページ(* manifest.json *の 'options_ui')と' browser_action'ポップアップは背景ページと同じコンテキストにあります。一般的に特定のタスクに重点を置いていますが、バックグラウンドページと同じChrome APIにアクセスできます。したがって、上記のコードは動作します。あなたの2番目の質問については、答えに私はより多くの情報が必要です。 1つの問題は、結果を構築している情報がコンテンツスクリプトまたはバックグラウンドスクリプトにある場合です。率直に言って、問題は[mcve]を使って本当に[新しい質問](http://stackoverflow.com/questions/ask)になるように十分です。 – Makyen

関連する問題