新しいタブを開き、その中に新しいHTMLドキュメントを作成する方法は?古い再起動が必要なAPI(Components.classes
、Components.interfaces
など)を使用することをお勧めしますが、動作する方法は問題ありません。私は、タブやウィンドウのいずれかでURLを開くには、次のコードを使用して、私のアドオンの一つで"hello world"で新しいタブを開きます
1
A
答えて
0
、:
/**
* Open a URL in a window or a tab.
*/
function openUrlInWindowOrTab(url, titleText, inWindow, makeTabActive) {
// Default: in tab; tab not activated
if(typeof (url) !== "string") {
return;
}//else
// Add/remove a "/" to comment/un-comment the code appropriate for your add-on type.
/* Add-on SDK:
let activeWindow = require('sdk/window/utils').getMostRecentBrowserWindow();
//*/
//* Overlay and bootstrap (from almost any context/scope):
Components.utils.import("resource://gre/modules/Services.jsm"); //Services
let activeWindow = Services.wm.getMostRecentWindow("navigator:browser");
//*/
let gBrowser = activeWindow.gBrowser;
if(inWindow) {
// Set default title
titleText = (typeof titleText === "string") ? titleText : "Opened by [Your add-on]";
//Open a window
return activeWindow.open(url, titleText);
} else {
//Open a tab
let newTab = gBrowser.addTab(url);
if(makeTabActive) {
//Make the tab active
gBrowser.selectedTab = newTab;
}
return newTab;
}
}
上記は、オーバーレイとブートストラップアドオンで動作するはずです。また、アドオンSDKのコードのコメントを外し、オーバーレイ/ブートストラップコード(activeWindow
を取得した行)をコメントアウトして、アドオンSDKで動作することもできます。ただし、アドオンSDKでは、SDK固有のAPIを使用する方がよいでしょう。
あなたはcontent
lineであなたのアドオンのために定義されたとして、それは、(例えばchrome://[as defined in your chrome.manifest]/content/helloWorld.html
)、その後、あなたのchrome/content
ディレクトリにHTMLファイルを提供し、それに対して適切なURLを使用して、新しいタブでの「Hello World」を言いたい場合あなたのchrome.manifestの
関連する問題
- 1. ブループリントコンテナを開始できません - Hello World
- 2. Hello worldを実行できません
- 3. print( "Hello World")が "Hello World \ n"と表示されます
- 4. Monodroid Hello Worldが開き、ただ閉じますか?
- 5. hello world app - iphoneの開発を学ぶ
- 6. MainActivityのclassNotFoundで新しい 'Hello World'アプリが失敗する
- 7. Spring + BlazeDSの統合を開始する。 Hello Worldが欲しい
- 8. 新しいタブでリンクを開き、新しいタブのみを開く
- 9. lauch4j hello worldプログラム
- 10. :Hello WorldのC++
- 11. NativeScript Hello Worldアプリケーションサイズ
- 12. haskell leksah hello-world
- 13. Hello world for CUDA.Net
- 14. スカラメソッドチェーン - hello world
- 15. Hello world failed
- 16. Hello World in Apache
- 17. Hello world in VBS
- 18. Hello World Androidプログラム
- 19. hello world for struts
- 20. Django Apache Hello World
- 21. Hello world app
- 22. Hello World Error Angular2
- 23. Hello World in APEX
- 24. React-Typescript Hello World
- 25. Hello World!リモートステートレスセッションBean
- 26. Linuxシェルコード "Hello、World!"
- 27. Hello Worldビジュアルスタジオコード
- 28. Hello world for circos?
- 29. GreaseMonkey Hello World
- 30. JavaScriptCore Hello world nightly
あなたのために*動作する予定は*あなたが書いているアドオンの種類によって異なります。あなたが述べたことは、あなたがOverlay/XULアドオンを書いていることを意味します。あれは正しいですか?もしそうなら、WebExtensionやAdd-on SDKベースのアドオンの作成を真剣に**考えてください。 [ドキュメントのFirefoxアドオンの紹介](http://stackoverflow.com/documentation/firefox-addon/3235/introduction-to-firefox-add-ons/13574/introduction#t=201609290133319078047)を参照してください。 – Makyen
はい、私はOverlay/XULアドオンを持っています。私はそれらを動かすことを考えましたが、そうするには十分な時間がありませんでした。移行するために知っておく必要があることは、(1)新しい拡張でブラウザコンソールを介してグローバル変数/アクセス拡張の状態を設定することは可能ですか? (2)新しいAPIにnsIStreamListener/TracingListenerの代替手段はありますか? – Vibok
アドオンSDKでは、オーバーレイやブートストラップのアドオン(もちろん、* chrome.manifest * 'overlay'sではありません)で行うことができるJavaScriptのほとんどを実行できます。アドオンSDKは、ラッパーを備えたブートストラップされたアドオンです。アドオンSDK APIによって直接サポートされていないことをしたいときに、ラッパーから脱出することができます。 – Makyen