1

現在、選択テキストが Null であるか、コンテキスト = ["page"] であるかを判断しようとしています。

現在、「コンテキスト」を参照する適切な if ステートメントと else ステートメントを記述する方法、および/または selectionText が null である場合が不明です。現在、私は以下のコードを書いていますが、これは現在、メニュー項目をクリックしても実際には何もしていません。

chrome.contextMenus.onClicked.addListener(getword);
chrome.runtime.onInstalled.addListener(function() {
  var contexts = ["page","selection","link","editable"];
  var title = "Chrome Extension";

chrome.contextMenus.create({
   "title": title,
   "contexts": contexts,
   "id": "main_parent"
   });
});

function getword(info,tab) {

//Currently this simply checks for which menu item was clicked.
 if (info.menuItemId == "main_parent") {
   chrome.tabs.create({ 
      url: "https://www.google.com/search?q=" + info.selectionText,
   })
 }
 //Need to determine here if the context is a "page" and/or instead if info.selectionText is null, then do something... (Current Code below doesn't do anything)
 if (info.selectionText == "") {
  alert("PAGE is selected or Selection text is NULL");
 }
4

1 に答える 1

4

コンテキストが であるかどうかを知りたい場合はpage、ページ コンテキスト専用の別のコンテキスト メニューを作成できます。

    chrome.contextMenus.onClicked.addListener(getword);
chrome.runtime.onInstalled.addListener(function() {
    var contexts = ["selection","link","editable"];
    var title = "Chrome Extension";

    chrome.contextMenus.create({
        "title": title,
        "contexts": contexts,
        "id": "context_for_all_but_page"
    });

    chrome.contextMenus.create({
        "title": title,
        "contexts": ["page"],
        "id": "context_for_page"
    });
});

そうすれば、両方を区別できます。

function getword(info,tab) 
{

    if (typeof info.selectionText === "undefined")
        alert("Selection text is undefined");

    if (info.menuItemId === "context_for_page")
        alert("PAGE is selected");

    //Currently this simply checks for which menu item was clicked.
    if (info.menuItemId === "context_for_all_but_page" && typeof info.selectionText !== "undefined") {
        chrome.tabs.create({ 
            url: "https://www.google.com/search?q=" + info.selectionText
        });
    }
}

typeof info.selectionText === "undefined"ではなく使用したことに注意してくださいinfo.selectionText == ""。ドキュメントには のオプション パラメータであると記載されてinfoいるため、空の文字列ではなく未定義になります。

于 2013-10-17T07:38:00.573 に答える