Chrome扩展加载Javascript
Chrome Extension Loading Javascript
我有一个扩展,删除胭脂应用程序从用户的新闻在Facebook上。
在JS扩展中,我以编程方式包含一个用于统计跟踪的<script>
标记。主要是看有多少人在使用这个应用程序,来自哪些国家等。
问题是当用户在Facebook上时,跟踪脚本只会加载一次。当用户正在浏览Facebook时,它将不会再次加载,除非他们手动刷新页面。
这是我的代码在我的内容脚本。
$(document).ready(function() {
// Include stats tracking
(function(d){
var trackingjs, id = 'stats'; if (d.getElementById(id)) {return;}
trackingjs = d.createElement('script'); trackingjs.id = id; trackingjs.async = true;
trackingjs.src = "tracking_url";
d.getElementsByTagName('body')[0].appendChild(trackingjs);
}(document));
}
我包含jQuery,因为我使用jQuery为我的插件。一切都很好,只是它只包含一次这个脚本,并且不会再次包含它,除非用户手动刷新页面。
这和Facebook有关吗?
要导航页面,即使是通过ajax,用户也要单击页面,因此您可以尝试侦听文档上的单击事件并检查其位置。哈希值被更改
var currentLocation=location.href;
document.addEventListener('click', function(){
if(location.href == currentLocation){
return;
}
currentLocation = location.href
// run here your tracking code
});
并且确保你的代码允许多次运行它而不重新加载页面,现在它不会(facebook不会在页面导航上替换文档,所以在第二次调用跟踪函数d.g elementbyid (id)将不会为空,并将执行返回)。
你可以这样做:
function (d){
var trackingjs, id = 'stats'; if (d.getElementById(id)) {return;}
trackingjs = d.createElement('script'); trackingjs.id = id; trackingjs.async = true;
trackingjs.src = "<url>";
d.getElementsByTagName('body')[0].appendChild(trackingjs);
trackingjs.onload = (function(trackingjs){
trackingjs.parentNode.removeChild(trackingjs);
})(trackingjs)
};
除了绑定到文档。准备好了,您还可以为每个ajax完成(因为这可能是facebook在用户导航时触发的:ajax请求,而不是新页面请求)运行跟踪功能:
function tracker() {
// Include stats tracking
(function(d){
var trackingjs, id = 'stats'; if (d.getElementById(id)) {return;}
trackingjs = d.createElement('script'); trackingjs.id = id; trackingjs.async = true;
trackingjs.src = "tracking_url";
d.getElementsByTagName('body')[0].appendChild(trackingjs);
}(document));
}
$(document).ready(tracker);
$(document).ajaxComplete(tracker);
相关文章:
- HTML外部javascript加载另一个javascript
- 什么是谷歌地图'的javascript加载策略
- 使用javascript加载knockoutjs组件
- Javascript - 加载函数运行时未定义的变量
- 使用javascript加载并显示来自另一个域的页面,而不显示原始URL
- 使用Javascript加载页面
- Javascript加载时间过长
- 使用纯Javascript加载外部URL内容
- 如何在使用javascript加载页面时直接设置对象参数
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- 将外部 SVG 和包含 JavaScript 加载到 HTML 中
- 是否有一个 JavaScript 加载器可以将套接字的数量限制为 1 或 2
- 使用本地生成的代码通过 JavaScript 加载 IFrame
- Jquery/javascript:加载页面时不需要的重复函数
- 一段时间后使用Javascript加载网页ASP.net
- 在https网站上用javascript加载封面图片
- 如何使用cURL获取JavaScript加载的网络内容
- 如何检查是否使用javascript加载了框架?-不是加载,不是iframe
- I'我正在尝试将JavaScript加载到我的UIWebView中
- 如何用Javascript加载本地文件