2009-07-27 12 views
1

アドレスバーの内容をリアルタイムで取得できるFirefoxアドオンを作成したいとします。たとえば、このアドオンはすべての「a」を「A」に変更します。ユーザは「a」を押した。 問題は、Javascriptでこれを行う方法が見つからないということです。アドレスバーのコンテンツをリアルタイムで取得する方法はありますか?Firefoxアドオンのアドレスバーのキーイベントへの応答

+0

実際にお聞きしている内容を少し明確にするためにタイトルを変更しました。 – Kip

答えて

1

Firefoxの拡張機能は、アドレスバーを完全に制御できます。 omnibar拡張機能のソースコードを確認してみてください。 (ソースコードを入手するには、拡張機能をインストールしてFirefoxのプロファイルフォルダを突き抜けてください)

+0

.xpiファイルをローカルに保存し、.zipファイルに名前を変更して開くことができます。通常はそこに.jarファイルがあります。.jarファイルは.zipファイルにリネームされて、周囲を突き抜けることができます。あなたが誤って変更や何かを保存する場合に備えて、firefoxプロファイルフォルダをつぶすことよりも安全かもしれません... – Kip

+0

...またはあなたはfirefoxプロファイルフォルダのコピーを作ることができます。今度はそれについて考えてください... – Kip

+0

.. AMOにログインしている場合、オンラインでソースを閲覧することができます:https://addons.mozilla.org/en-US/firefox/files/browse/60041 – Nickolay

-1

ユーザーをリダイレクトせずにアドレスバーのテキストを変更するだけであれば、これはできません。

ロケーションオブジェクトのプロパティが変更されるたびに、変更されたURLでwindow.location.assign()が呼び出されたかのように、URLを使用してドキュメントがロードされます。

ブラウザでjavascriptを使用して、ユーザーをリダイレクトせずにアドレスバーの文字列を変更することができれば、フィッシングが発生しやすくなります。それはあなたがしようとしていることではないですか?

+0

彼はブラウザのアドオンからこれを実行したいと思いますページから。ブラウザのアドオンのjavascriptはもっと多くのことをすることができます(Tobiasの言うとおり、オムニバスの拡張機能はそうすることができるようです) – Kip

+0

私はフィッシングをやろうとしていません。入力した文字をキーボードレイアウトの英語の文字に置き換えて英語で書く場合 –

-1

JavaScriptでは、window.location.hrefは値を与えますが、onkeyupは見ることができますが、AFAIKでは、設定した値をページにロードせずに場所フィールドに書き戻すことはできません。私は何を意味することは、次のことをやったならば、それはページをリロードなり、次のとおりです。

window.location.href = window.location.href.toLowerCase(); 

私はFirefoxの拡張機能の仕組みに慣れていないんだけど、多分これを行うにはより多くの「ネイティブ」な方法がありますか?

+0

| firefox拡張のコードには適用できません。通常、ブラウザウィンドウとその| location |ブラウザのUIへの特別なURLです。 – Nickolay

2

あなたは実際にあなたが立ち往生した時点では、実際には言わなかった。

  1. まず、メインブラウザウィンドウ(browser.xul)をオーバーレイする単純な拡張子を作成する必要があります。 Building an Extension - MDCURL Fixer - good example extension

  2. 次に、URLバーにイベントリスナーを追加する必要があります(キーワード:addEventListener、events)。利用可能なさまざまなイベントに関する文書を読むべきですが、おそらく "keypress"を聞きたいでしょう。 Firefoxやその他の拡張機能のソースを検索して、リスナーにどの要素が接続されているかを確認することができます。 DOMインスペクタ拡張で、DOMツリーを調べることができます(使用可能な要素を確認することができます)。

  3. イベントリスナーでは、ロケーションバー(gURLBar.value、IIRC)のURLを確認して更新する必要があります。また、キャレットの位置を保持するために何かをする必要があります。

    gBrowser.addProgressListener(myExt_urlBarListener, 
    
        Components.interfaces.nsIWebProgress.NOTIFY_LOCATION); 
    

    urlbarがで更新することができます。

https://developer.mozilla.org/en/Extensions

0

に記載されているフォーラムで助けを求めることを躊躇しないでください。あなたは、次のようなurlbar変更を追跡するリスナーが必要な場合がありますこのコマンド:

document.getElementById(comVar.URLBAR_ID.gui).value 

Javascripで各キーストロークを検出する必要があります上記のコードでURLを読んでください。詳細が必要な場合は、Firefoxのスプーフィングアドオンの1つでコードを抽出してチェックアウトしてください。

関連する問題