Manifest V2 Chrome扩展中chrome.tabs.executeScript获取元素内容求助
解决方案
要获取document.getElementById("pr_id_5")的内容,你需要利用chrome.tabs.executeScript的回调函数接收内容脚本返回的数据(扩展上下文和网页上下文相互隔离,无法直接跨上下文访问变量)。具体修改如下:
let save = document.getElementById("save"); save.onclick = function(el) { chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { // 保留原有赋值操作 chrome.tabs.executeScript(tabs[0].id,{code: 'document.getElementById("username").value = "'+login_val+'";' }); // 修改获取元素内容的逻辑 chrome.tabs.executeScript(tabs[0].id, { code: 'document.getElementById("pr_id_5").textContent;' // 返回元素纯文本内容,可按需替换为innerHTML/value }, function(results) { // results为返回值数组,单个标签页执行时取results[0]即可 const elementContent = results[0]; console.log("元素内容:", elementContent); // 可根据需求处理内容,比如弹窗展示或存入变量 alert(elementContent); }); }); }
关键说明:
- 根据
pr_id_5元素的类型选择对应属性:- 普通文本元素用
textContent获取纯文本 - 需要保留HTML结构的内容用
innerHTML - 输入框类表单元素用
value获取输入值
- 普通文本元素用
chrome.tabs.executeScript的第三个参数是回调函数,results参数会接收内容脚本返回的数据,针对单个标签页执行时,取results[0]就能拿到目标内容。
内容的提问来源于stack exchange,提问作者Tipusx
相关产品推荐
相关产品推荐

