如果这听起来太简单,请耐心等待。
我正在编写一个 chrome 扩展程序,一旦用户右键单击页面中的对象,就会出现上下文菜单,并且他可以选择获取单击的 div 类的 ID + 对其进行评分。
我已经为此工作了几天,并设法将额外的按钮添加到上下文菜单中。一旦点击了这些按钮中的任何一个,就会记录页面的源。本来可以花更少的时间来做这件事,但这是我第一次用 javascript 编写,我一直卡在这个过程中。
无论如何,我不想要页面的整个 html 代码,而是点击的 div 类。我在谷歌搜索后发现最好的方法是使用 jquery 的“html”函数而不是纯 javascript。问题是它对我不起作用。
这是我的代码:
BackgroundPage(这里一切似乎都很好)
function genericOnClick(tab)
{
console.log(tab.pageUrl);
chrome.tabs.getSelected(null, function(tab)
{
chrome.tabs.sendMessage(tab.id, {action: "getSource"}, function(source) {
console.log(source);
});
});
}
// Create a parent item and two children.
var parent1 = chrome.contextMenus.create({"title": "Rank Trigger", "contexts":["all"]});
var child1 = chrome.contextMenus.create
(
{"title": "Rank 1", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick}
);
var child2 = chrome.contextMenus.create
(
{"title": "Rank 2", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick}
);
var child3 = chrome.contextMenus.create
(
{"title": "Rank 3", "contexts":["all"], "parentId": parent1, "onclick": genericOnClick}
);
ContentPage:(这里有问题)
chrome.extension.onMessage.addListener(function(request, sender, callback)
{
if (request.action == "getSource")
{
// callback(document.documentElement.outerHTML); //here i can get the page's whole source, I only want the clicked div class
callback($('div class).html(); <--- something wrong here
}
});
清单文件:
{
"name": "x",
"description": "x",
"version": "0.1",
"permissions": ["contextMenus", "tabs"],
"content_scripts":
[
{
"matches": ["http://*/*","https://*/*"],
"js": ["jquery.js", "content.js"],
"run_at": "document_end"
}
],
"background":
{
"scripts": ["background.js"]
},
"manifest_version": 2
}
有任何想法吗?我再次知道我的问题看起来很简单,但我是自学所有这些,并且出于某种原因,我发现 Web 编程比应用程序编程更难一些。
非常感谢。
编辑:只是为了澄清我想要的 html 源代码是这样的:
<div class="story reviewed-product-story" data-story-id="488481648"....</div>
。我想要这个 div 类,以便我可以解析它以获取数据故事 ID。如果有一种方法可以在不先获取 div 类的情况下获取 ID,那么它也可以工作(甚至可能更可取)
编辑:感谢 Adeneo,我现在可以获得页面源中第一个 div 类的 ID,但不能获得点击的 ID。在我拥有的东西上向前迈进了一步,但并不完全是我需要的东西。也许我必须在使用 $('.story').data('story-id') 之前获取点击的 div 的来源。有什么建议么?