2017-09-25 48 views
1

我的Chrome扩展将显示文本文件中的链接是否与当前选项卡的html中的任何链接匹配。该文本文件是喜欢 -文本文件行与字符串不匹配indexOf()

https://www.facebook.com/groups/929402513755249/ 
https%3A%2F%2Ficpc.baylor.edu%2F 
https%3A%2F%2Fvjudge.net%2Fcontest%2F187074 

我content.js是 -

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(); 

我不明白为什么link.indexOf(lines[line])为-1当链接https://www.facebook.com/groups/929402513755249/#lines[line]https://www.facebook.com/groups/929402513755249/。但是link.indexOf("https://www.facebook.com/groups/929402513755249/")返回0作为索引。

回答

1

如果您使用Windows(或至少编辑Windows上的文本文件),则可能会用\r\n而不是\n来分隔这些行;如果是这样的话,那么这些线路将全部以\r结束,而链路不会,因此它将永远不匹配。请尝试allText.split(/\r?\n/)而不是split('\n')

1

除了chridd的回答,也尽量修剪分割字符串值寻找比赛之前,

var linestr = lines[line].trim(); 
相关问题