如何知道哪个网页正在调用外部javascript脚本

如何知道哪个网页正在调用外部javascript脚本,javascript,external,Javascript,External,外部javascript可以被许多Web页面使用。如何知道哪个网页正在使用外部js脚本?例如,我有一个javascript脚本s.js。s.js的函数是否可以检查哪个页面正在使用s.js?要执行的页面中必须包含JavaScript。仅出于测试目的,您可以使用以下方法获取页面: document.write(location.href); 在生产环境中,将位置存储在变量中 var loc = location.href; 包含有关浏览器当前所在URL的所有信息 hash Retu

外部javascript可以被许多Web页面使用。如何知道哪个网页正在使用外部js脚本?例如,我有一个javascript脚本s.js。s.js的函数是否可以检查哪个页面正在使用s.js?

要执行的页面中必须包含JavaScript。仅出于测试目的,您可以使用以下方法获取页面:

document.write(location.href);
在生产环境中,将位置存储在变量中

var loc = location.href;
包含有关浏览器当前所在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 在服务器端,像素处理程序将提供1x1px图像,将内容类型设置为适当的值ie image/gif,提取查询字符串并记录URL。根据您的服务器技术,有许多实现方法。

脚本可以引用document.location,它将始终围绕主页的URL构建。具体来说,document.location.href将是URL

因此:


或者随便什么。

在javascript文件中,您需要对将记录文件名的脚本进行AJAX调用。日志可以是数据库或平面文件。您需要将location.href或适合您所需的location属性作为参数发送到日志脚本

嵌入在Javascript文件中,您需要将函数附加到windows onload或domready事件,以确保执行AJAX调用。确保不要覆盖onload/domready事件,而只是将其添加到事件堆栈中。如果不知道如何添加/附加事件,则需要查找如何添加/附加事件


注意:您可以使用SOAP或REST来进行日志记录,而不是使用日志记录脚本。

当脚本在页面上运行时,您可以创建一个警报弹出菜单,让您知道它在您当前所在的页面上:

alert('Im in your page being your s.js file');

我当然不会把URL写进文档中;我是说,你为什么要这么做?好吧,该吃点百忧解了。显然,document.write仅用于测试目的。它很可能是console.log或alert。没有必要对它学究气。好吧,好吧,但认真地使用document.write通常被认为是不好的做法,在这种情况下,几乎可以肯定,任何人都不会使用页面URL。这个网站不仅要满足人们提出问题的直接需求,还要满足人们寻找已经发布的答案的需求。因此,答案中的一个例子应该是一个很好的例子。我认为这份文件把每个人都搞糊涂了。谢谢你,我已经修改了我的帖子。-1那没有意义。如果可以从脚本中获取location.href,为什么要进行ajax调用。因为有时有些HTML页面不是您自己的,它们正在使用您的脚本。你需要以某种方式写入日志。。。这就是为什么要使用AJAX。你将把那个位置发送到哪里。href,把我的观点告诉我。+1如果你在网上托管一个图书馆,并且你想知道它多久会被请求一次,这是有意义的。谢谢大家。阿曼多,我不认为他是弱智,我只是不认为他理解。询问者想知道哪个页面在使用它。那可能是他的网站,或者另一个。拥有日志是查看脚本历史记录以及查看是否有页面使用过时脚本的最佳方式。多么有趣啊。不,我不会把你的观点还给你。首先,问题是s.js的函数是否可以检查哪个页面正在使用s.js。您回答的问题是,服务器如何知道哪些网页正在使用此javascript。因为这是一个公认的答案,这就是OP想要问但没有问的。此外,AJAX调用(即XMLHttpRequest)受同源策略的约束,因此其他服务器上的页面无法向您的服务器发出AJAX请求。为此,你需要使用类似于JSONP.Lol的东西,因为每个人都被困在位置上。他只是想知道哪些页面实际包含s.js,我认为唯一的方法是浏览每个页面并检查自己。^^。。。什么“我不知道这句话是什么意思,”小崎说。如果我在某个网站上托管了一个脚本,我怎么可能检查每个页面?谷歌搜索脚本标签?你的s.js是只供你在整个网页中使用,还是供许多人在线使用?
if (document.location.href === 'http://www.cnn.com') {
  // being imported by CNN ...
}
alert('Im in your page being your s.js file');