Как запустить скрипт содержимого расширения Chrome на странице, прежде чем перейти от этой страницы? - PullRequest
1 голос
/ 31 октября 2011

Я пытаюсь получить пользовательский выбор страницы с помощью скрипта контента в тот момент, когда я покидаю его.

Есть идеи? Спасибо!

1 Ответ

4 голосов
/ 31 октября 2011

Ну, я немного исследовал, что вы хотите сделать, и вот что я нашел:

Вы можете определить, когда пользователь хочет уйти с этим кодом:

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();
}

Все этокод должен быть в вашем скрипте контента, я не уверен, почему вы хотите получить выбор, но если это для сохранения его в вашей БД или для дальнейшей обработки, вы можете отправить выбор пользователя на страницу background.html.не знаю, знакомы ли вы с ними, но вот ссылка, http://code.google.com/chrome/extensions/background_pages.html, для этого вы можете использовать api для передачи сообщений для расширений chrome:

http://code.google.com/chrome/extensions/messaging.html

Я работаю с этим уже 3 недели, и это довольно просто, просто убедитесь, что у вас есть четкое представление о том, как настроена архитектура вашего расширения, потому что это может сэкономить вам много времени.ng out потока данных.

Это приведет нас к коду нашего скрипта контента, подобному следующему:

window.onbeforeunload = function() {
  chrome.extension.sendRequest({userSelection:getSelected()});
}

Вы просто должны прослушать на своей фоновой странице запрос какэто:

var receiveMessage= function() {
                    chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
                        //Do something
                   });
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...