javascript - Chrome 扩展在新标签页中运行 js
问题描述
我的popup.js:
chrome.tabs.create({ url: "https://mywebsite.com" })
我如何在新创建的选项卡中运行这个 js?
chrome.tabs.executeScript(null, {
code: "document.getElementById('test').value='test';"
});
解决方案
创建选项卡时,您可以传递一个回调函数来接收新创建的选项卡以进行操作。此选项卡有一个id
which 用于指定脚本应在哪个选项卡中执行。除非您指定选项卡 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 选项卡 API 文档。
推荐阅读
- c# - 获取所有已实现接口的列表
- android - Flutter:如何在触发转换之前为小部件设置动画?
- asp.net - cTransform.TransformFinalBlock 总是返回空字符串?
- python-3.x - 如何将多本词典变成一本词典?
- swift - 使用任何 RGB 颜色空间时无法获得有效的 CGContext?
- php - Wampserver RewriteRule 问题
- python - Python,Chrome 任务管理器 - 以编程方式访问 Chrome 任务管理器的文本而不使用 CHROMIUM
- icloud - iCloud KV 数据存储在文件系统的什么位置?
- c# - 使用 XAML 托管 API 在单独的线程上打开对话框时出现问题
- swift - 快速从firebase数据库中读取子值