2016-05-02 9 views
0
  • Chrome拡張機能ツールバーのボタンは
  • を押されたボタンがあり、そのボタンが押されたときに、それが現在のページにcontent.jsファイルを注入し、ポップアップを開くDOM
  • ページでcontent.jsはDIVモーダルウィンドウを構築します。そのモーダルでは、押されたときにクロム拡張子background.jsファイルにメッセージを送り、フルページのスクリーンショットイメージを作成するように指示するボタンです。
  • はその後もdisplay: none;
  • 、それは完全なページの高さのスクリーンショットであるため、それがスナップされますように座標で前後にcontent.jsbackground.jsスクリプト間でメッセージを送信する必要があり、そのページ上のビューからモーダルDIVを隠しますフレームごとにビューポートの画像を生成して、フルハイト画像を構築する。
  • イメージがビルドされると、私のbackground.jsスクリプトは、イメージを編集するための完全なイメージ注釈ライブラリを持つ私の拡張のカスタムページである新しいファイルedit.htmlを開きます。
  • ファイルから、編集が完了した画像は、AJAXを使用してAJAXを使用して新しい画像をリモートサーバにアップロードし、新しい画像アップロードのURLを返します。
  • ここで私はedit.htmlファイル/タブを閉じ、元のページcontent.jsに新しい画像URLとメッセージを送り返す必要があります。また、そのページのモーダルウィンドウを非表示にして新しい画像URLをそのモーダルウィンドウのテキスト入力フィールドに追加します。

私はこのすべて私がする必要がある時点まで働いてきた:クロムエクステンションが呼び出された元のページのタブに注目しますか?

  • は、元のページのタブにフォーカスを持って、同時にedit.htmlファイル/タブ
  • を閉じます我々は始まった
  • 元のページcontent.jsにもメッセージを送信することができます。スクリプトには、モーダルウィンドウを表示するメッセージを含めることができ、作成し、編集した後、リモートサーバーにアップロードしたスクリーンショットの画像URLが含まれます。

1)
edit.htmlのタブを閉じると、元のタブページにフォーカスを戻す方法で任意のヘルプ?

edithtmlページは、background.jsファイルにメッセージを送信して閉じる必要があります。そのbackground.jsファイルは、元のタブのcontent.jsファイルにメッセージを送信して、再びそのセッションにフォーカスを移すことができます。この部分をどうやって行うのか分かりません。主にどのタブが元のものかを知っています。

+0

'displkay:なし;'は 'display:none;' 'edit/html'は' 'edit.html'でなければなりません。 – itzmukeshy7

+0

@ itzmukeshy7タイプミスを指摘してくれてありがとう – JasonDavis

答えて

2

コンテンツスクリプトがchrome.runtime.connect()を使用してメッセージをバックグラウンドページに送信する場合、バックグラウンドページはタブIDをport.sender.tab.idから取得できます。ここで、「ポート」はポートオブジェクトの名前です。バックグラウンドページは、新しいタブを開くために使用されたURLの検索文字列に入れて、新しいedit.htmlページにタブIDを渡すことができます。 chrome.tabs.create({url: "edit.html?23"})edit.htmlページが拡張の一部であるため、chrome.tabs.update()を使用して元のページをフォーカスすることができ、chrome.tabs.getCurrent()を使用して自身のタブIDを取得し、次にchrome.tabs.remove()を使用して閉じることができます。chrome.tabs.sendMessage()を使用するか、chrome.extension.getBackgroundPage()を使用して背景ページのウィンドウオブジェクトにアクセスし、バックグラウンドページとコンテンツスクリプトの間に既存のメッセージポートを使用できるようにすることで、コンテンツスクリプトにメッセージを送信できます。

+0

ありがとう、私は今考え出したと思う=) – JasonDavis

関連する問題