我试图根据我从当前页面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);
});
我不知道为什么它会打开这么多标签。