Chrome 扩展 运行 新标签页中的 js

Chrome extension run js in new tab

我的popup.js:

chrome.tabs.create({ url: "https://mywebsite.com" })

如何在新创建的标签页中 运行 这个 js?

chrome.tabs.executeScript(null, {
  code: "document.getElementById('test').value='test';"
});

创建标签时,可以通过回调函数接收新建标签进行操作。此选项卡有一个 id 可用于指定脚本应在哪个选项卡中执行。除非您指定选项卡 ID,否则脚本将在当前选项卡而不是新创建的选项卡中执行。 所以你想要的大概是

chrome.tabs.create({ url: "https://mywebsite.com" }, tab => {
  chrome.tabs.executeScript(tab.id, {
    code: "document.getElementById('test').value='test';"
  });
});

或者更优雅

function createTab(options) {
  return new Promise(resolve => {
    chrome.tabs.create(options, resolve);
  });
}

async function main() {
  const tab = await createTab({ url: "https://mywebsite.com" });

  chrome.tabs.executeScript(tab.id, {
    code: "document.getElementById('test').value='test';"
  });
}

main();

详情见Chrome Tab API documentation