2011-10-30 3 views
1

私はそれから離れてナビゲートする瞬間にコンテンツスクリプトを介してページのユーザー選択を取得しようとしています。どうすれば、そのページから離れて移動する前に、クロム拡張コンテンツのスクリプトをページ上で実行できますか?

アイデア?ありがとう!

+0

ご質問私には完全にはっきりしているわけではありませんが、ユーザーの選択はどういう意味ですか?何を達成したいのですか少し説明できますか? – ElHacker

+0

ちょっとシード、申し訳ありません、私ははっきりしていませんでした。私は、ユーザーがページ上でマウスを使って選択/強調表示したテキストを意味します。 – 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(); 
} 

このコードはすべてあなたのコンテンツスクリプトに含まれているはずですが、なぜあなたが選択をしたいのか分かりませんが、それをDBに保存したり、さらに処理したい場合は、

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

:あなたがそれらに精通しているが、ここにリンクがある場合、私は知らないbackground.htmlページへのユーザー、 http://code.google.com/chrome/extensions/background_pages.html、 はあなたがChromeの拡張機能のためのAPIを渡すメッセージを使用することができ、これを達成するために

私は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

関連する問題