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