由此我需要使h1成为一个定义的变量
function display_h1 (results){
h1 = results;
document.querySelector("#id1").innerHTML = h;
}
chrome.tabs.query({active: true}, function(tabs) {
var tab = tabs[0];
chrome.tabs.executeScript(tab.id, {
code: 'document.querySelector("h1").textContent'
}, display_h1);
});
答案 0 :(得分:0)
好的,根据您的评论,看起来您只是尝试查询dom(活动标签页)以获取h1
标记id="id1"
的引用。
为此,您可能需要使用content script
订阅来自popup
的请求。
您可以尝试以下内容:
关于内容脚本。
function getHeading (id){
var h1El = document.getElementById(id);
return h1El ? h1El.innerText : null;
}
chrome.runtime.onMessage.addListener((message, sender, callback) => {
if (message.name === 'get-h1-content') {
var text = getHeading(message.elId);
// do what you need with the text.
}
});
在popup.js
上document.addEventListener('DOMContentLoaded', () => {
var queryInfo = {
active: true,
currentWindow: true
};
chrome.tabs.query(queryInfo, function (tabs) {
var tab = tabs[0];
chrome.tabs.sendMessage(tab.id, { name: 'get-h1-content', elId: "id1" }, null, null);
}
});
所以基本上你是从popup.js
向content script
上运行的active tab
发送请求,以便content script
可以查询标签的dom 并获取h1的值。
现在,我想强调您正在使用的ID #id1
显然会特定于您用于测试的内容,而不是适用于每个页面的内容,因此您可能需要在dom中找到另一个要搜索的元素。