2015-04-12 2 views
-1

Можно создать расширение для google chrome do: выбрать слово, нажать правую кнопку и открыть новую вкладку, используя это слово как часть URL-адреса?Открыть новую вкладку с выбранным словом на странице

Пример слова: тест

Перейти на страницу: http://www.example.com/тест

+0

Обратите внимание, что вы спрашиваете «возможно ли это?». Ответ «Да». Но если вы хотите помочь с помощью _how_, вы должны лучше сформулировать свои вопросы. Ознакомьтесь с руководством по [Как спросить] (http://stackoverflow.com/help/how-to-ask). – Xan

ответ

1

Вы можете просто использовать chrome.contextMenus.create и chrome.tabs.create в background.js. Я создал код, и он работает со мной.

function sendSearch(selectedText) { 
var serviceCall = 'http://www.example.com/' + selectedText; 
chrome.tabs.create({url: serviceCall}); 
} 

chrome.contextMenus.create(
{ 
    title: "Find '%s' on example.com!", 
    contexts:["selection"], 
    onclick: function(info, tab) { 
     sendSearch(info.selectionText); 
    } 
}); 

Основано на Best practices when using event pages @Xan. Вместо этого вы можете использовать chrome.contextMenus.onClicked. Например:

function sendSearch(selectedText) { 
var serviceCall = 'http://www.example.com/' + selectedText; 
chrome.tabs.create({url: serviceCall}); 
} 

chrome.contextMenus.create(
{ 
    title: "Find '%s' on example.com!", 
    contexts:["selection"], 
    "id": "ViewSelectedLink" 
    }); 
function contextClicked(info, tab) { 
    if (info.menuItemId == "ViewSelectedLink") { 
     sendSearch(info.selectionText); 
    } 
} 
chrome.contextMenus.onClicked.addListener(contextClicked); 
+0

Я бы рекомендовал переместить 'onclick' из описания элемента в глобальный обработчик событий. Таким образом, он будет совместим с страницами событий. (См. № 7 [здесь] (https://developer.chrome.com/extensions/event_pages#best-practices)) – Xan

+0

@Xan Спасибо за предложение. Я обновил ответ. – gui47

Смежные вопросы