问题描述
我有一个Chrome扩展程序,可在Google地图中打开KML / KMZ文件。当用户右键单击指向KML文档的链接时,会触发扩展。但是上下文菜单没有出现。它使用后台脚本。这是 manifest.json :
I have a Chrome extension that opens a KML/KMZ file in Google Maps. The extension is triggered when the user right-clicks a link to the KML document. But the context menu does not appear. It uses a background script. Here is the 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 code> kmlopen ,菜单项的 id 。我究竟做错了什么? openWin(/ * some url * /); 函数可以正常工作。
Yet when I right-click on a link to a KML or KMZ file, the context menu doesn't show. According to the JavaScript console, the functions ran. This is what the console outputs when I run chrome.contextMenus.create({"title": "Open KML/KMZ", "contexts": ["link"], "id": "kmlopen", "targetUrlPatterns": ["*.kml", "*.kmz"]}); manually under _generated_background_page.html I get the kmlopen, the id of the menu item. What am I doing wrong? The openWin(/*some url*/); function works fine.
推荐答案
错误的模式。
模式遵循标准格式。
所以你应该使用模式
"targetUrlPatterns": ["*://*/*.kml", "*://*/*.kmz"]
但是,请。
这篇关于无法将Chrome上下文菜单项显示在Chrome扩展程序上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!