2010-07-21 28 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);  
}); 

这个问题我我所知道的是,jquery代码总是将信息捕获到我正在寻找的服务器上,但后者只是每隔一段时间就捕获一次,并且感觉看起来像是随机的。有没有办法强制它的函数调用,并且我尝试了onload,它也不起作用。

回答

1

“domready”不是一个事件,所以我很惊讶这个作品。例如,在Mozilla和Opera中,它应该是DOMContentLoaded。你确定它不工作只是因为有时document.referrer是空的,有时它不是?

如果你只是把代码放在<script>块(最好在外部文件中)并将其放在结束标记之前,那将会非常简单。然后它会在DOM准备就绪时运行,并且不会发生事件。这应该工作得很好。

最后,这看起来最好在服务器端完成,就像PHP一样,您还可以访问HTTP引用链接。然后,您可以直接将结果输出到HTML中。此外,您还可以使用NoScript或仅使用JavaScript浏览来查看此内容。

+0

对不起,我没有包括所有的代码,但这实际上是动态插入到网页上,并托管在服务器端。它将代码插入页面的头部,但插入它的原始js坐在正文标签的正上方。我也试过window.onload = function()无济于事。 – mdubulous 2010-07-21 20:28:59

+0

然后你不应该把它插入头部。为什么不把它插入身体?另外,如果你在DOM加载后将它插入头部,那么你不需要添加任何监听器来等待DOM加载 - 它已经加载了! – Rafael 2010-07-21 20:35:41