无法在Chrome扩展程序中显示Chrome上下文菜单项

时间:2015-04-17 16:12:01

标签: google-chrome google-chrome-extension google-chrome-devtools google-chrome-app

我有一个Chrome扩展程序,可在Google地图中打开KML / KMZ文件。当用户右键单击指向KML文档的链接时,将触发扩展。但是没有出现上下文菜单。它使用后台脚本。这是manifest.json

{
  "manifest_version": 2,
  "name": "KML/KMZ Viewer",
  "version": "1.0.0",
  "description": "Can be used to view KML/KMZ Files.",
  "icons": {
    "19": "tiny.jpg",
    "24": "icon.png",
    "128": "image.png"
  },
  "permissions": [
    "tabs",
    "contextMenus",
    "activeTab",
    "background"
  ],
  "background": {
    "scripts": ["background.js"]
  }
}

以下是background.js

// Set up context menu at install time.
chrome.runtime.onInstalled.addListener(function() {
    menuCreate();
    console.log('Issued function');
});

// add click event
chrome.contextMenus.onClicked.addListener(onClickHandler);

// The onClicked callback function.
function onClickHandler(info, tab) {
    var url = info.selectionText;
    openWin(url);
};

function openWin(kml) {
    chrome.windows.create({"url":"http://www.nearby.org.uk/google/fake-kmlgadget.html?    up_kml_url="+kml+"&up_view_mode=earth&up_lat=&up_lng=&up_zoom=&up_earth_2d_fallback=1&up_earth_fly_from_space=1&up_earth_show_nav_controls=1&up_earth_show_buildings=1&up_earth_show_terrain=1&up_earth_show_roads=1&up_earth_show_borders=1&up_earth_sphere=earth&up_maps_streetview=1&up_maps_default_type=hybrid"});
}

function menuCreate() {
    chrome.contextMenus.create({"title": "Open KML/KMZ", "contexts": ["link"], "id": "kmlopen", "targetUrlPatterns": ["*.kml", "*.kmz"]});
    console.log('Function ran');
}

然而,当我右键单击指向KML或KMZ文件的链接时,上下文菜单不会显示。根据JavaScript控制台,函数运行。这是我在chrome.contextMenus.create({"title": "Open KML/KMZ", "contexts": ["link"], "id": "kmlopen", "targetUrlPatterns": ["*.kml", "*.kmz"]});下手动运行_generated_background_page.html时控制台输出的内容我得到菜单项的kmlopenid。我究竟做错了什么? openWin(/*some url*/);函数工作正常。

1 个答案:

答案 0 :(得分:1)

错误的模式。

模式遵循标准Match pattern格式。

所以你应该使用模式

"targetUrlPatterns": ["*://*/*.kml", "*://*/*.kmz"]

但是,请mindful of query strings