4

サファリ拡張機能を作る imageSearch By google.

これが私の情報源です。

注入された.js

document.addEventListener("contextmenu", handleContextMenu, false);

function handleContextMenu(event) {
    safari.self.tab.setContextMenuEventUserInfo(event, event.target.nodeName);
}

global.html

<!DOCTYPE HTML>
<script type="text/javascript" src="jquery.js"></script>
<script>
safari.application.addEventListener("contextmenu", handleContextMenu, false);
function handleContextMenu(event) {
    var query = event.userInfo;
    if (query === "IMG") {
        event.contextMenu.appendContextMenuItem("imageSearch", "Search Google with this image");
    }
}

safari.application.addEventListener("command", performCommand, false);
function performCommand(event) {
    if (event.command === "imageSearch") {  


       /*How I get image Url??? */
       var imageUrl="";


    /*
        var url = "http://images.google.com/searchbyimage?image_url="+imageUrl;
        var tab = safari.application.activeBrowserWindow.openTab("foreground");
        tab.url = url;

    */

    }
}

私の目標は..

  1. マウスを右クリックすると、コンテキスト メニューに [この画像で Google で検索] が追加されます。(クリア)

  2. 「この画像でGoogleで検索」をクリックしてググってください。(???)

画像のURLが知りたいです。

私は何をすべきか?

4

2 に答える 2

4

これを試すことができます:

  1. ノード全体をイベントの userInfo に保存します。

    function handleContextMenu(event) {
        safari.self.tab.setContextMenuEventUserInfo(event, event.target);
    }
    
  2. グローバル javascript 変数を global.html に追加します (例: var lastClickedImg)。

  3. handleContextMenu 関数を変更して、関数 handleContextMenu の event.userInfo をこの変数に格納します。

    function handleContextMenu(event) {
        var query = event.userInfo;
        if (query.nodeName === "IMG") {
            lastClickedImg = query;
            event.contextMenu.appendContextMenuItem("imageSearch", "Search Google with this image");
        }
    }
    
  4. 関数 performCommand では、lastClickedImg から画像の URL を簡単に取得できます。

    lastClickedImg.src
    
于 2012-09-03T21:19:14.630 に答える
0

挿入されたスクリプトに contextmenu のイベント リスナーを配置することで、画像の URL を見つけることができます。

function contextMenuHandler(event)
{
    var url = event.target.src;
    safari.self.tab.setContextMenuEventUserInfo(event, url);
}

document.body.addEventListener("contextmenu", contextMenuHandler, false);

そして、コマンドイベントでイメージ src を回復します

var imageUrl = event.userInfo;

また、画像であることを確認するために、いくつかの検証を行う必要があります。

于 2012-09-17T10:38:49.740 に答える