#google-chrome-extension
#google-chrome-extension
Вопрос:
Я пытаюсь получить пользовательский выбор страницы с помощью сценария содержимого в тот момент, когда я отхожу от нее.
Есть идеи? Спасибо!
Комментарии:
1. Ваш вопрос мне не совсем понятен, что вы имеете в виду под выбором пользователя?. Не могли бы вы немного подробнее объяснить, чего вы хотите достичь?
2. Эй, Сайред, извини, что я не выразился более ясно. Я имею в виду текст, который пользователь выделил / выделил с помощью мыши на странице.
3. Обычно я бы просто выполнил сценарий содержимого, чтобы сделать это, но в данном случае я пытаюсь сделать это в событии «перейти от страницы к новой странице». Которого нет в Chrome.
Ответ №1:
Ну, я немного изучил, что вы хотите сделать, и вот что я нашел:
Вы можете определить, когда пользователь захочет перейти с помощью этого кода:
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
и вы можете получить выбор пользователя таким образом:
var getSelected = function(){
var t = '';
if(window.getSelection){
t = window.getSelection();
}else if(document.getSelection){
t = document.getSelection();
}else if(document.selection){
t = document.selection.createRange().text;
}
return t;
}
Теперь, если мы объединим обе эти функции для совместной работы, мы могли бы сделать что-то вроде этого:
window.onbeforeunload = function() {
return getSelected();
}
Весь этот код должен быть в вашем скрипте содержимого, я не уверен, почему вы хотите получить выделение, но если это для сохранения его в вашей базе данных или для дальнейшей обработки, вы можете отправить выделение пользователя в фоновый режим.html-страница Я не знаю, знакомы ли вы с ними, но вот ссылка, http://code.google.com/chrome/extensions/background_pages.html ,
для достижения этой цели вы можете использовать API передачи сообщений для расширений Chrome:
http://code.google.com/chrome/extensions/messaging.html
Я работаю с этим уже 3 недели, и это довольно просто, просто убедитесь, что у вас есть четкое представление о том, как настроена архитектура вашего расширения, потому что это может сэкономить вам много времени на выяснение потока данных.
Это приведет нас к коду нашего скрипта содержимого, похожему на этот:
window.onbeforeunload = function() {
chrome.extension.sendRequest({userSelection:getSelected()});
}
вам просто нужно прослушать запрос на фоновой странице следующим образом:
var receiveMessage= function() {
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
//Do something
});
}
Комментарии:
1. Спасибо Syred … onbeforeunload — это то, что я искал!