2011-09-17 43 views
2

我想根據是否選擇數字或文本來顯示不同的菜單選項。根據選擇渲染上下文菜單

我試過玩內容腳本,但我不能讓他們在gmail中工作,這是我需要它的工作。這裏是我有什麼,它的工作原理上的不是Gmail(它是一個HTTPS的事情嗎?)

其他網站Background.html

<script src="driver.js"></script>

content_script.js

document.addEventListener("mousedown", function(event){ 
    if(event.button == 2) { 
    var selection = window.getSelection().toString(); 
    chrome.extension.sendRequest({cmd: selection}); 
    } 

}, true); 

driver.js

chrome.extension.onRequest.addListener(function(request) { 
    alert(request.cmd); 
}); 

manifest.json的

{ 
"name": "Context Menu Search", 
"description": "Opens the selected text as keyword in a new window", 
"version": "0.1", 
"permissions": ["contextMenus"], 
    "content_scripts": [ 
    { 
     "matches": ["http://*/*","https://*/*"], 
     "js": ["content_script.js"] 
    } 
    ], 
"background_page": "background.html" 
} 
+0

看到http://stackoverflow.com/questions/6382467/chrome-extension-context-menus-how-to-display-a-menu-item-only-when-there-is-no – serg

回答

1

Selection type changes context menu using chrome extension

您必須設置鼠標監聽下來。在創建菜單之前沒有其他方法可以獲取選定的文本。

見這太問題:

chrome extension context menus, how to display a menu item only when there is no selection?

這裏是代碼的其餘部分是在鏈路的一部分。

document.addEventListener("mousedown", function(event){ 
//right click 
if(event.button == 2) { 
    if(window.getSelection().toString()) { 
     chrome.extension.sendRequest({cmd: "createSelectionMenu"}); 
    } else { 
     chrome.extension.sendRequest({cmd: "createRegularMenu"}); 
    } 
    } 
}, true); 
+0

謝謝,我有一個戲劇,並得到了工作。但是,它不適用於https網站。我正在寫這個擴展名用於我的Gmail帳戶。我已將以下內容添加到清單文件中。 「content_scripts」:[{ 「匹配」:[ 「HTTP:// */*」, 「https://開頭*/*」], 「JS」:[ 「content_script.js」] } ], – BeepBoop

+1

我用我的代碼更新了這個問題。 – BeepBoop

+1

得到它的工作,我發現在我的清單文件中設置「all_frames」爲真,讓它開始在Gmail中工作。 「權限」:[ 「contextMenus」], 「content_scripts」:[{ 「匹配」:[ 「HTTP:// */*」, 「https://開頭*/*」], 「JS 「:[」content_script.js「], 」all_frames「:true } ], – BeepBoop