2010-07-21 1 views
0

У меня есть код, который полагается на JQuery, который работает здесь:создание функции Jquery против каких-либо проблем библиотеки

$(function() { 


var referrer = document.referrer; 
    var dataText = 'client='+client+'&referrer='; 
    dataText = dataText + referrer; 

    // Create the AJAX request 
    $.ajax({ 
     type: "GET",     
     url: "http://www.myurl.com/project/thecollector.php",    
     data: dataText,     
     success: function() {    
      $('#complete').html('Your page view has been added!'); 
     } 
    }); 
}); 

Я переписан код не нужно JQuery здесь:

window.addEventListener('domready', function() 
{ 
var referrer = document.referrer; 
    var dataText = 'client='+client+'&referrer='; 
    dataText = dataText + referrer; 

if (window.XMLHttpRequest)   
{ 
    // code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest();  
} 
else   
{ 
    // code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   
} 
var url = "http://www.myurl.com/project/thecollector.php?"+dataText;   
xmlhttp.open("GET",url,false);   
xmlhttp.send(null);  
}); 

Проблема I У меня есть код jquery, который всегда захватывает информацию на сервере, который я ищу, но последний только фиксирует его каждый раз и время, и он кажется кажущимся случайным. Есть ли способ вызвать вызов функции, чтобы заставить его, и я попытался загрузить, и он тоже не работает.

ответ

1

«domready» не является событием, поэтому я удивлен, что это работает вообще. Например, в Mozilla и Opera это должно быть DOMContentLoaded. Вы уверены, что это не работает, потому что иногда document.referrer пуст, а иногда нет?

Было бы намного проще, если бы вы просто поместили код в блок <script> (желательно во внешний файл) и поместили его непосредственно перед закрывающим тегом. Тогда он будет работать, когда DOM будет готов, и нет никаких проблем с событиями. Это должно хорошо работать.

Наконец, похоже, что это лучше всего сделать на стороне сервера, так как с чем-то вроде PHP вы также можете получить доступ к HTTP-рефереру. Затем вы можете просто вывести результат прямо в HTML. Кроме того, вы разрешаете этому странному пользователю использовать NoScript или просто просматривать без JavaScript, чтобы увидеть этот контент.

+0

Извините, я не включил весь код, но на самом деле он динамически вставлен на веб-страницу и размещен на стороне сервера. Он вставляет код в головную часть страницы, но исходный js, который вставляет его, сидит прямо над тегом тега тела. Я также попробовал window.onload = function() безрезультатно. – mdubulous

+0

Тогда вы не должны вставлять его в голову. Почему бы просто не вставить его в тело? Кроме того, если вы вставляете его в голову _after_, загруженный DOM, вам не нужно добавлять слушателей в ожидании загрузки DOM - он уже загружен! – Rafael

Смежные вопросы