Chrome扩展程序内容脚本多次运行

时间:2019-09-12 12:47:52

标签: javascript google-chrome-extension

我试图根据我从当前页面DOM的表中某些字段中提取的数据打开一个新标签。为此,在background.js中,我从用户获取行号作为输入。然后我使用这种方法:

chrome.tabs.executeScript(tab.id, {
  file: 'contentScript.js' 
}, function() {
  chrome.tabs.sendMessage(tab.id, {parameter: rowIndex});
});

在contentScript.js中,我有一条消息的事件侦听器,然后使用发送的参数将行的所有相关字段提取到变量中,这些变量将构建URL并粘贴变量的值作为参数。最后,我使用window.open(url)打开URL。

它正在工作,但是当我第二次这样做时,它将打开两个带有URL的新选项卡。第三次打开三个选项卡,等等。

var rowIndex = prompt("What row# do you want to run? (Search row is index #1)");
chrome.tabs.executeScript(tab.id, {
  file: 'contentScript.js' 
}, function() {
  chrome.tabs.sendMessage(tab.id, {parameter: rowIndex});
});

ContentScript:

chrome.runtime.onMessage.addListener(function(message) {
  debugger;
  var rowIndex = message.parameter;
  var var1 = document.querySelector("#content > div > md-table-container > table > tbody > tr:nth-child("+ rowIndex +") > td:nth-child(4) > div > div > span").textContent.trim();
  var var2 = document.querySelector("#content > div > md-table-container > table > tbody > tr:nth-child("+ rowIndex +") > td:nth-child(7) > div > div").textContent.trim();
  var endDate = document.querySelector("#content > div > md-table-container > table > tbody > tr:nth-child("+ rowIndex +") > td:nth-child(15) > div > div > span").textContent.trim();
  console.log(endDate);
  var url = 'I_HIDE_THE_BASE_URL?var1='+ var1 + '&day='+endDate+'&record_type=record&var2='+ var2;
  window.open(url);
});

我不知道为什么它会打开这么多标签。

0 个答案:

没有答案
相关问题