我的Chrome扩展程序会显示文本文件中的链接是否与当前标签的html中的任何链接相匹配。文本文件就像 -
var xhr = new XMLHttpRequest();
xhr.open('GET', chrome.extension.getURL('file.txt'), true);
xhr.onreadystatechange = function()
{
if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200)
{
var allText = xhr.responseText;
//var lines = allText.split('\n');
for (var i = 0; i < document.links.length; i++) {
var link= document.links[i].href;
var lines = allText.split('\n');
for(var line = 0; line < lines.length; line++){
console.log(link); // prints: https://www.facebook.com/groups/929402513755249/#
console.log(lines[line]); //prints: https://www.facebook.com/groups/929402513755249/
var linestr = lines[line];
console.log(link.indexOf(linestr)); // prints: -1
console.log(link.indexOf("https://www.facebook.com/groups/929402513755249/") !== -1); // prints: true
if(link.indexOf(lines[line]) !== -1)
{
console.log("Link Matched!");
}
}
}
}
};
xhr.send();
我的content.js是 -
link.indexOf(lines[line])
当链接为https://www.facebook.com/groups/929402513755249/#
且lines[line]
为https://www.facebook.com/groups/929402513755249/
时,我无法理解为什么link.indexOf("https://www.facebook.com/groups/929402513755249/")
为-1。但{{1}}返回0作为索引。
答案 0 :(得分:1)
如果您正在使用Windows(或者至少在Windows上编辑文本文件),这些行可能会被\r\n
分隔,而不仅仅是\n
;如果是这种情况,那么这些行将全部以\r
结尾,而链接不会,所以它永远不会匹配。请尝试使用allText.split(/\r?\n/)
代替split('\n')
。
答案 1 :(得分:1)
除了chridd的答案之外,还要在寻找匹配之前尝试修剪分割字符串值,
var linestr = lines[line].trim();