2011-10-30 109 views
1

我试图通过内容脚本在我离开它的那一刻获取用户对页面的选择。如何在页面导航离开该页面之前在页面上运行Chrome扩展内容脚本?

任何想法?谢谢!

+0

你的问题对我来说并不完全清楚,您对用户选择的含义是什么?你能解释一下你想完成什么? – ElHacker

+0

嘿Syred,对不起,我不是更清楚。我的意思是用户使用鼠标在页面上选择/突出显示的文本。 – Mitya

+0

通常我只是执行一个内容脚本来做到这一点,但在这种情况下,我试图在“从页面导航到新页面”事件上做到这一点。 Chrome中不存在。 – Mitya

回答

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 
        }); 
       } 
+0

谢谢Syred ... onbeforeunload是我正在寻找! – Mitya

相关问题