拼接函数将相同的元素插入每个索引
Splice function inserting same elements into every index
我正在制作一个扩展程序,在您访问网站时跟踪Web请求。每次用户访问另一个网站时,扩展程序都会检查以查找站点数组中的最新条目,以便它知道在跟踪器数组中的哪个位置插入跟踪器,但是由于某种原因,它们都复制到跟踪器数组中的下一个元素。这是我的代码:
chrome.webRequest.onBeforeRequest.addListener(function(details) {
if (details.tabId == -1) {
console.log("Skipping request from inactive tab");
//return;
}
var notInteresting = Object.keys(activeTabs).every(function(key) {
if (activeTabs[key] == details.tabId) {
//Search for correct array index to insert trackers
outerloop:
for(i = (currentNum); i--; i < (currentNum-10)){
//If the element doesn't exist
if(typeof sites[i] !== 'undefined'){
curNum = i;
break outerloop;
}
}
//Check for particular trackers on pages
var s = details.url;
console.log("1curNum = " + curNum);
if(typeof trackers[curNum] === 'undefined'){
trackers[curNum] = '';
}
//Code to identify the trakers based on the URL in webrequests
if(s.indexOf('doubleclick.net') >= 0){
console.log("Doubleclick Tracker: ", details.url);
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Doubleclick Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
}
else if(s.indexOf('googleads') >= 0){
console.log("Google Ads Tracker: ", details.url);
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Google Ads Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
}
else if(s.indexOf('googlesyndication') >= 0){
console.log("Google Adsense Tracker: ", details.url);
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Google Adsense Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
}
else if(s.indexOf('analytics') >= 0){
console.log("Analytics Tracker: ", details.url);
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Analytics Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
}
else if(s.indexOf('connect.facebook') >= 0){
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Facebook Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
console.log("Facebook Tracker: ", details.url);
}
else if(s.indexOf('scorecardresearch') >= 0){
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Scorecard Research Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
console.log("Scorecard Research Tracker: ", details.url);
}
else if(s.indexOf('chartbeat') >= 0){
trackers.splice(curNum, 0, trackers[curNum] + ("<br> <b>Chartbeat Tracker: </b>"+ s));
document.getElementById('tracker' + curNum).innerHTML = trackers[curNum];
console.log("Chartbeat Tracker: ", details.url);
}
} else {
}
});
假设我首先加载CNN的网站,我会得到对"http://z.cdn.turner.com/analytics/cnnexpan/jsmd.min.js"的引用,然后在大约5个网站之后,总是弹出相同的链接。我花了几个小时试图弄清楚为什么上一个索引中的元素会被复制到新索引中,但我就是看不出问题所在。有什么建议吗?
我能找到的唯一问题是这些类型的行:
trackers.splice(curNum, 0, trackers[curNum] + (...));
我认为它们应该是这样的:
trackers.splice(curNum+1, 0, (...));
然后添加新的跟踪器,您的跟踪器也将在那里。
另一种简单的方法(感谢@rsanchez)就是简单地保持这样:
trackers[curNum] = trackers[curNum] + (...);
或
trackers.splice(curNum, 1, trackers[curNum] + (...));
相关文章:
- 如果数字已插入排序数组,则获取该数字的索引
- 如何使用Jscript | JQuery在textArea中获取插入的|删除的字符串的索引和长度
- JavaScript-在不影响索引的情况下将元素插入数组
- 确定插入索引
- HTML5/JavaScript.使用索引数据库时无法插入数据
- 如何将 url 插入到 Javascript var 索引中的文本中
- 拼接函数将相同的元素插入每个索引
- 为什么我的输入被插入到具有相同索引的两个diff数组中?(js)
- 在变量索引处插入字符串
- jQuery将子项插入到集合索引处的元素中
- Javascript:如何在多维数组的索引处插入一行
- 字符插入错误的字符串索引
- 不在索引时插入数组索引
- Javascript Contenteditable -设置光标/插入符号为索引
- Javascript:没有插入右索引行表
- 在索引B处插入数字A
- 如何在指定索引处将多个跨度插入HTML元素中
- JS插入到数组在特定的索引
- 在索引x, y之间插入元素
- 如何使用jQuery在特定索引处插入值到2d数组中