我試圖將我的firefox插件移植到chrome,這裏是我的示例代碼。chrome-extention替換選定的文本
文件:myscript.js(部分)
.
.
function init() {
.
.
.
}
function myFunc(inp, option) {
.
.
.
}
chrome.extension.onMessage.addListener(function (message, sender, response) {
switch (message) {
case "ITRANS":
console.log("ITRANS");
if (document.getSelection().baseNode != null){
init();
window.modifySelection(myFunc(window.getSelection().toString(), 0));
}
break;
case "Devanagari":
console.log("Devanagari");
if (document.getSelection().baseNode != null){
init();
window.modifySelection(myFunc(window.getSelection().toString(), 1));
}
break;
default:
console.log("Default");
}
});
文件:background.js
var _selection_univ = chrome.contextMenus.create({
"title": "INDIC 2 ITRANS",
"id": "ITRANS",
"onclick": reportclick,
"contexts": ["selection"]
}, function() {
console.log("Context Menu 1 ITRANS");
});
var _selection_univ = chrome.contextMenus.create({
"title": "Eng 2 Devanagari",
"id": "Devanagari",
"onclick": reportclick,
"contexts": ["selection"]
}, function() {
console.log("Context Menu 2 Devanagari");
});
function reportclick(info, tab) {
switch (info.menuItemId) {
case "ITRANS":
console.log("BG: ITRANS");
chrome.tabs.sendMessage(tab.id, "ITRANS");
break;
case "Devanagari":
console.log("BG: Devanagari");
chrome.tabs.sendMessage(tab.id, "Devanagari");
break;
default:
console.log("BG: Default");
}
}
文件:manifest.json的
{
"name": "Parivartan",
"version": "0.8.2",
"manifest_version": 2,
"permissions":[
"contextMenus",
"<all_urls>",
"tabs"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js"],
"all_frames": true
}
],
"background": {
"scripts": ["background.js"]
}
}
我無法弄清楚一些事情。 (1)我的init()函數應該在哪裏運行(它應該只運行一次以初始化我的插件全局變量)。
(2)將所選文本替換爲函數的輸出。 上面的代碼不起作用,說找不到「modifySelection」。 (3)如果他們在不同的(file2.js)文件中,我怎麼能調用我的函數。 目前我把所有的功能放在一個文件(myscript.js)中。
(4)如何在菜單中創建菜單。
我試圖在谷歌搜索,但無法找到上述解決方案。誰能幫幫我嗎。
-Mohan
這個問題需要重大改造:具體談談你想達到什麼樣的,你的(意)的設置是什麼樣的,哪些文件是存在於您的擴展,whatere是什麼ID有問題的代碼運行「菜單內的菜單」,... – gkalpak