0

onClick 関数で chrome.contextMenus.create title プロパティの参照を取得したい。

例えば:

chrome.contextMenus.create({"title": "sometitle", "contexts":["selection"], "onclick": searchSelection});

function searchSelection(info, tab){
    var query = "<i want title (sometitle) here>"+info.selectionText;
    var url = "http://www.google.com/search?q="+query;
    chrome.tabs.create({url: url});
}

検索しましたが、これを行うオプションが見つかりませんでした。


+1 質問: contextMenu アイテムをインライン編集する方法はありますか? または、CM 要素の後に編集可能な入力フィールドを追加しますか? いいえと思いますが、質問する価値があります:)

4

1 に答える 1

0

特定のメニュー項目に関する情報を取得する既存の API メソッドはありません。これは、この情報が必要になることはほとんどなく、拡張機能の開発者が既に利用できるためです。

結果を達成するための汎用関数を次に示します。

/**
 * Creates a menu item using chrome.contextMenus.create.
 * When the second argument is specified, the click handler receives a
 *  third argument: The original creation data.
 * When the "onclick" property is set in the creationData, the "onclick"
 *  event does not receive a third parameter.
 *
 * @param object creationObject    Basic creation object
 * @param function onclickHandler  "click" property of the creationObject
 */
function createMenuItem(creationObject, onclickHandler) {
    if (onclickHandler) {
        creationObject.onclick = function(onClickData, tab) {
            onclickHandler(onClickData, tab, creationObject);
        };
    }
    return chrome.contextMenus.create(creationObject);
}

// Usage:
createMenuItem({"title": "sometitle", "contexts":["selection"]}, searchSelection);
function searchSelection(info, tab, creationData) {
    var query = "<i want title " + creationData.title + " here>" + info.selectionText;
    var url = "http://www.google.com/search?q=" + query;
    chrome.tabs.create({url: url});
}

いいえ、インライン編集可能なメニュー項目を追加する方法はありません (使用可能なオプションのみがドキュメントにchrome.contextMenus.create記載されています)。

于 2012-05-06T09:07:43.240 に答える