как я могу запустить скрипт содержимого расширения Chrome на странице прямо перед тем, как перейти с этой страницы?

#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 — это то, что я искал!