ユーザーがページを表示する時間を計測するコンテンツ スクリプトがあります。onbeforeunload
これを行うには、各ページにコンテンツ スクリプトを挿入し、タイマーを開始してから、イベントがトリガーされたときにアドオンにメッセージを送信します。
ただし、メッセージがバックグラウンド スクリプトに渡されることはないようです。
私main.js
がこのように見えるとすれば:
var pageMod = require('page-mod'),
self = require("self");
pageMod.PageMod({
include: "http://*",
contentScriptFile: [self.data.url('jquery.min.js'),
self.data.url('content.js')],
onAttach: function(worker) {
worker.port.on('pageView', function(request) {
console.log("Request received");
});
}
});
main.js
次のコードを使用して問題なくメッセージを送信できます。
self.port.emit('pageView', { visitTime: time });
ただし、ユーザーがページを離れたときにそれを実行しようとすると、問題が発生します。次のようにすると、メッセージが受信されません。
$(window).bind('onbeforeunload', function(e) {
self.port.emit('pageView', { visitTime: time });
// This should prevent the user from seeing a dialog.
return undefined;
});
私も聞いてみましたbeforeunload
が、それもうまくいきません。何が問題なのですか?