如何在离开该页面之前在页面上运行chrome扩展内容脚本?

时间:2011-10-30 22:14:20

标签: google-chrome-extension

我正试图通过内容脚本让用户选择页面,此时我将离开它。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:4)

我调查了一下你想做什么,这就是我发现的:

您可以使用以下代码检测用户何时想要离开:

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个星期了,而且非常简单,只需确保您清楚地了解扩展程序的体系结构是如何配置的,因为这样可以节省大量时间来计算数据流动。

这将引导我们在内容脚本上使用与此类似的代码:

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

你只需要在你的背景页面中听取这样的请求:

var receiveMessage= function() {
                    chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
                        //Do something
                   });
                }