Я делаю простой скрипт для сохранения некоторых данных о том, когда пользователь получает доступ к странице и покидает страницу, а также некоторые другие сведения о странице. Скрипт "работает", но не всегда. Кажется, он работает спорадически. Я не получаю консольные ошибки, когда это не так. Серверная часть работает нормально.
window.onload = function() {
var timeStarted, i, c, l, timeLeft, pageData;
timeStarted = new Date().getTime();
i = <?php echo $model->id; ?>;
c = <?php echo $model->cat; ?>;
l= <?php echo $model->loc; ?>;
window.onbeforeunload = function(){
timeLeft = new Date().getTime();
pageData = [{name: 'timeStarted', value: timeStarted},
{name: 'i', value: job},
{name: 'c', value: cat},
{name: 'l', value: loc},
{name: 'timeLeft', value: timeLeft}];
// Set url for JavaSCript
var url = '<?php echo Yii::app()->createUrl("item/viewedItemInformation"); ?>';
<?php echo CHtml::ajax(array(
'url'=>'js:url',
'data'=> "js: pageData",
'type'=>'post',
'dataType'=>'json',
)); ?>;
}
}
Примечание
Я только что прочитал этот пост window.onbeforeunload не работает в chrome, и я использую хром. Однако я, кажется, получаю те же результаты и в FF.
Как правильно решить эту проблему?
Обновление Я буквально не могу вам сказать, в каких ситуациях это работает и не работает. Я использую эту функцию только на страницах элементов. Иногда, когда я нажимаю на страницу элемента и ухожу, чтобы посетить другой элемент, он работает, в других случаях это не так, это действительно спорадически. Что я могу сказать, так это то, что если я перейду со страницы элемента на страницу, не являющуюся элементом, например на домашнюю страницу, никакие записи никогда не будут записаны.
beforeunload
. Этот обратный вызов никогда не предназначался для этого. - person meagar   schedule 16.09.2013