2

我使用chrome.contextMenusdocumentUrlPatterns 过滤显示上下文菜单的位置。

我尝试在模式前加上“-”,但这并没有改变任何东西......

function recreateStuff(){
        if(logoncmid!=-1){}
        var hosts=[];
        var ihosts=[];
        for (var i = savedData.length - 1; i >= 0; i--) {
          hosts.push(savedData[i].host);
          ihosts.push("-"+savedData[i].host);
          //console.log(savedData[i]);
        };
        // hosts created ...
        chrome.contextMenus.update(logoncmid,{documentUrlPatterns: hosts});
        chrome.contextMenus.update(regcmid,{documentUrlPatterns: ihosts});


}

是否可以制作排除列表?

4

2 回答 2

2

我认为目前这是不可能的,因为documentUrlPatterns需要一组匹配模式并且没有办法表达否定匹配模式。

您可以打开一个功能请求,要求一种机制来表达排除的匹配模式,就像对带有和的内容脚本所做的那样exclude_matchesexclude_globs

于 2013-04-22T15:10:01.037 回答
2

黑客怎么样?:)

var windowTopTab = [];
var curWin = 1;
var curUrl = "";

function fetchCurUrl() {
  if (!windowTopTab[curWin]) return;
  chrome.tabs.get(windowTopTab[curWin], function(tab) {
    curUrl = url;
  });
}

chrome.tabs.onActivated.addListener(function(activeInfo) {
  windowTopTab[activeInfo.windowId] = activeInfo.tabId;
  fetchCurUrl();
  recreateStuff();
});
chrome.windows.onFocusChanged.addListener(function(windowId) {
  curWin = windowId;
  fetchCurUrl();
  recreateStuff();
});
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
  if (windowTopTab[curWin])
    if (windowTopTab[curWin] == tabId) {
      fetchCurUrl();
      recreateStuff();
    }
});

var contextm = chrome.contextMenus.create({
  title: "* Fill RegForm",
  contexts: ["editable"],
  onclick: genericOnClick
});

function recreateStuff() {
  var curHN = getHostname(curUrl);
  var reg = true;
  for (var i = savedData.length - 1; i >= 0; i--) {
    if (savedData[i].host == curHN) reg = false;
  }

  if (reg) {
    chrome.contextMenus.update(contextm, {
      title: "* RegForm",
      onclick: genericOnClick
    });
  } else {
    chrome.contextMenus.update(contextm, {
      title: "* LoginForm",
      onclick: genericOnClick2
    });
  }
}
于 2013-04-22T15:27:53.453 回答