简介
我的Chrome扩展程序出现问题。它应该根据您的文本选择显示一个小的覆盖弹出窗口(在jQuery中创建)和谷歌的搜索结果。基本上你应该可以在任何页面上突出显示文本,右键单击它(上下文菜单),点击“搜索'选择的关键字'”,并在同一个标签中弹出一个小窗口作为覆盖图,其中包含所有搜索结果谷歌或不同的搜索引擎。
问题
现在扩展程序运行良好而且没有问题,但是在广泛使用此扩展程序(假设1小时)之后,当我突出显示另一个关键字并搜索它时,扩展名REMEMBERS最后一个关键字并显示错误的搜索结果。然后,当我突出显示另一个关键字时,它会重新记住我刚刚突出显示的关键字,但以前没有得到它的结果。这就像一个链接过程,我总是一个关键词。
我的想法
我认为这个问题的原因可能是事件监听器,因为当出现这个问题时,我从console.log获取了一个日志(chrome.extension.onRequest.hasListeners());这说的是真的。这意味着附加了两个或更多事件侦听器,它们不应该被我通过chrome.extension.onRequest.removeListener(listener1)删除它们;
也许当实际网页仍在加载时我会突然显示关键字,点击上下文菜单并且扩展无法加载,但不知何故事件监听器触发......我真的无法完全复制这个问题。 ..以及导致这个问题的原因。
清单文件
{
"name": "Search Accelerator",
"version": "1.0",
"manifest_version": 2,
"description": "Search Accelerator extension",
"icons": {
"16": "icon19.png",
"48": "icon48.png",
"128": "icon128.png"
},
"background": {
"scripts": ["content_script.js"]
},
"minimum_chrome_version": "18",
"permissions": [
"contextMenus",
"tabs",
"http://*/*",
"https://*/*",
"management",
"webRequest"
]
}
内容脚本
chrome.contextMenus.create({“title”:'搜索“%s”',
“contexts”:['selection'],“onclick”:getClickHandler()});function getClickHandler(){return function(info,tab){
的console.log(chrome.extension.onRequest.hasListeners());chrome.extension.onRequest.addListener(function listener1 (request, sender, sendResponse) { var url = "http://www.google.com/?s=" + info.selectionText; console.log(url); var keywordObj = {keyword: url}; if (request.keywordRequest == "Yes") { console.log(keywordObj); sendResponse(keywordObj); }; chrome.extension.onRequest.removeListener(listener1); } ); chrome.tabs.executeScript(null, { file: "jquery.js" }, function() { chrome.tabs.executeScript(null, { file: "popup.js" }); }); }; };
Popup js
chrome.extension.sendRequest({keywordRequest: "Yes"}, function(response) {
$(document).ready(function() {
if($("#e14_accelerator")) {
$("#e14_accelerator").remove();
}
var rkeyword = response.keyword;
$("body").append("<div id=\"e14_accelerator\" style=\"position: fixed;top: 30px;right: -330px;z-index: 999999; \"><iframe style=\"border:5px solid #c9c9c9;-webkit-box-shadow: 1px 1px 15px 1px rgba(0, 0, 0, 0.2);\" src=\""+ rkeyword +"\" width=\"328\" height=\"240\"></iframe></div>");
$("#e14_accelerator").animate({right:-13},500);
$(document).click(function() {
$("#e14_accelerator").remove();
});
$("#e14_accelerator").click(function() {
return false;
});
});
});
出现此问题时出现的错误消息:
Error during tabs.executeScript: Cannot access contents of url "chrome-devtools://devtools/devtools.html?docked=true&dockSide=bottom&toolbarColor=rgba(230,230,230,1)&textColor=rgba(0,0,0,1)". Extension manifest must request permission to access this host. sendRequest:21
chromeHidden.handleResponse sendRequest:21
Error during tabs.executeScript: Cannot access contents of url "chrome-devtools://devtools/devtools.html?docked=true&dockSide=bottom&toolbarColor=rgba(230,230,230,1)&textColor=rgba(0,0,0,1)". Extension manifest must request permission to access this host. sendRequest:21
chromeHidden.handleResponse