许多网页都可以使用外部JavaScript.如何知道哪个网页使用外部js脚本?例如,我有一个javascript脚本s.js. 是否有可能s.js的函数可以检查哪个页面正在使用s.js?
location
object包含有关浏览器当前所在URL的所有信息.
hash Returns the anchor portion of a URL host Returns the hostname and port of a URL hostname Returns the hostname of a URL href Returns the entire URL pathname Returns the path name of a URL port Returns the port number the server uses for a URL protocol Returns the protocol of a URL search Returns the query portion of a URL
编辑现在,回答你实际想要问的问题,那就是如何跟踪哪些页面正在使用你的javascript文件.我认为(我之前没有实现过这样的东西)是使用与分析网站使用相同的策略.
他们似乎都使用跟踪像素的变体,浏览器下载脚本文件(例如QuantServer - http://edge.quantserve.com/quant.js).然后,该脚本从谷歌服务器请求1x1像素,并将网页的URL编码为图像的地址.所以对于stackoverflow.com,像素网址是:
http://pixel.quantserve.com/pixel;r=3547206;fpan=0;fpa=P0-82955756-1264139666260;ns=0;url=http%3A%2F%2Fstackoverflow.com ....(我没有不会透露我的浏览器发送的地址,因为我真的不知道它揭示了什么:)).
如您所见,该网站的网址是图片网址的一部分.在服务器端,您需要有一个处理此图像的处理程序,并通过从图像URL中提取页面地址来记录该页面地址.
之所以这是图像而不是AJAX请求的原因是因为AJAX请求受到浏览器XSS限制.基本上,浏览器不会对不是为页面提供服务的网站进行AJAX调用.这意味着www.otherpeopleswebsite.com上的页面不允许向www.mywebsite.com发出AJAX调用.对图像(或javascript文件)没有这样的限制.
因此,实现这样的事情的简单系统会对此产生影响:
//s.js var oldLoad = window.onload; window.onload = function(){ if (oldLoad) oldLoad(); var img = document.createElement('img'); img.setAttribute('src', 'www.mysite.com/pixel?url=' + window.location.href); }
在服务器端,pixel
处理程序将提供1x1px映像,将内容类型设置为适当的值(即image/gif
),提取查询字符串并记录URL.根据您的服务器技术,有很多方法可以实现它.