2

ページ上の画像の右クリックに反応する拡張機能を作成しています。さらに処理を行うために画像のサイズを知りたいです。

すぐに使用できるコールバックは、タブへの参照と「情報」オブジェクト ( OnClickData ) を取得し、最小限の情報のみを公開します。

以前にこのシナリオに当たった人はいますか? どちらかを考えています

  • srcUrl に基づいて画像を再度読み込み (URL が動的な場合は再現できない場合があります)、問い合わせます。
  • タブの DOM をたどって画像を見つけて調査しようとしています (コンテンツ スクリプトが拡張機能から Web ページへの境界を越える必要があるかどうかはわかりません)。
4

1 に答える 1

2

イメージ プロパティのコンテキスト メニュー拡張機能が行うことは、ユーザー スクリプトをコンテキスト メニュー API と組み合わせて使用​​することです。

ユーザー スクリプトはすべてのページに挿入され、コンテキスト メニュー イベントをリッスンし、画像に関する情報をchrome.extension.sendRequest次のように拡張機能に送信します。

document.addEventListener("contextmenu", function (e) {
    var elem = e.srcElement;
    if (elem instanceof HTMLImageElement) {
        var img = {
            src: elem.src,
            alt: elem.alt,
            height: elem.height,
            width: elem.width
        }
        chrome.extension.sendRequest(img);
    }
}, true);

バックグラウンド ページはchrome.extension.onRequest.addListener、このデータを受け取るために使用し、それをグローバル変数に格納します。コンテキスト メニュー API のクリック コールバックは、このグローバル変数からデータを読み取ります。

chrome.extension.sendRequestこれは、呼び出しが常にクリック コールバックの前に処理されることを前提としていますが、常にそうであるとは限りません。データが到着したかどうかをコールバックでチェックし、到着していない場合は、しばらくしてから ( を使用してsetTimeout) 再試行することができます。

于 2012-05-29T14:57:42.993 に答える