Javascript 基于右键单击从html的特定部分进行刮取

Javascript 基于右键单击从html的特定部分进行刮取,javascript,html,google-chrome-extension,web-scraping,Javascript,Html,Google Chrome Extension,Web Scraping,我正在构建一个chrome扩展,我希望能够右键单击页面的某个部分,然后从中获取一些信息。因此,使用chrome.contextMenus,我只希望能够从我右键单击的元素(它的属性之一)中进行刮取。有点像chrome中的行为,当您右键单击页面上的某个位置并选择inspect时,它将在您右键单击的页面元素上打开元素视图。我之所以要这样做,是因为将有许多具有不同id(属性)的类似类型元素,因此我希望能够仅获取我感兴趣的特定元素的id 这可能吗 我在查看文档,我想知道我是否知道元素类型(文章),我可以在

我正在构建一个chrome扩展,我希望能够右键单击页面的某个部分,然后从中获取一些信息。因此,使用chrome.contextMenus,我只希望能够从我右键单击的元素(它的属性之一)中进行刮取。有点像chrome中的行为,当您右键单击页面上的某个位置并选择inspect时,它将在您右键单击的页面元素上打开元素视图。我之所以要这样做,是因为将有许多具有不同id(属性)的类似类型元素,因此我希望能够仅获取我感兴趣的特定元素的id

这可能吗


我在查看文档,我想知道我是否知道元素类型(文章),我可以在上面设置上下文菜单并以这种方式获取存储在其中的id吗?

我想说,您的扩展必须记住右键单击下的最后一个元素是什么。内容脚本非常适合它

background.js

chrome.contextMenus.create({
    title: "Get ID",
    id: "menu1",
    onclick: function (info, tab) {
        // send message about context manu action
        chrome.tabs.sendMessage(tab.id, {
            msg: 'get_id'
        }, {
            frameId: info.frameId
        });
    }
});
let lastClickedEl = null;

// remember last clicked element
document.body.addEventListener('mousedown', function (e) {
    if (e.button === 2) { // right click to an element
        lastClickedEl = e.target;
    }
});

// receive message about context menu action
chrome.runtime.onMessage.addListener(function (request) {
    if(request.msg === 'get_id') {
        console.log(lastClickedEl.id); // your code here
    }
});
content script.js

chrome.contextMenus.create({
    title: "Get ID",
    id: "menu1",
    onclick: function (info, tab) {
        // send message about context manu action
        chrome.tabs.sendMessage(tab.id, {
            msg: 'get_id'
        }, {
            frameId: info.frameId
        });
    }
});
let lastClickedEl = null;

// remember last clicked element
document.body.addEventListener('mousedown', function (e) {
    if (e.button === 2) { // right click to an element
        lastClickedEl = e.target;
    }
});

// receive message about context menu action
chrome.runtime.onMessage.addListener(function (request) {
    if(request.msg === 'get_id') {
        console.log(lastClickedEl.id); // your code here
    }
});

@TobiasGlaus:他在问Chrome的扩展。