Chrome扩展程序 - 页面标题搜索 - 无法搜索h1

时间:2018-04-26 00:27:37

标签: javascript html json

由此我需要使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);
});

1 个答案:

答案 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.jscontent script上运行的active tab发送请求,以便content script可以查询标签的dom 并获取h1的值。

现在,我想强调您正在使用的ID #id1显然会特定于您用于测试的内容,而不是适用于每个页面的内容,因此您可能需要在dom中找到另一个要搜索的元素。