我有这段代码:
chrome.runtime.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
message.innerText = request.source;
}
});
我需要从源代码中的元素中获取文本。例如,考虑具有以下元素的页面:
<a class="something">something goes here</a>
我需要使用JavaScript获取类'something'
的文本。 request.source返回结构原样的源代码。
答案 0 :(得分:0)
您应该能够将源代码转换为jQuery对象,并像往常一样使用它。
var requestedSource = request.source;
$(requestedSource).find('a.something').first().text();
这对我来说对jsfiddle进行了非常简单的测试。
请注意,如果您有多个具有类&#34;&#34;的某个锚元素,则可能必须使用$ .find()返回的任何内容。 (我只是用$ .first()来简化我的例子)。在这种情况下,您可以像数组一样遍历$ .find()的结果。
如果该解决方案不起作用,另一种(但更糟)的方法是将所请求的代码写入隐藏的div,然后从div运行$ .find()(尽管如果第一个解决方案不起作用,request.source本身可能出现问题,因此请检查其内容。
例如:
$('body').append('<div id="requestedSource" style="display: none;"></div>');
然后:
$("#requestedSource").append(request.source);
$("#requestedSource").find("a.something").first().text();
如果你经常重复这个请求,你也可以在你完成处理时通过调用$ .empty()来清空隐藏的div:
$("#requestedSource").empty();
为了获得最佳性能,您需要将所有内容存储在变量中并写入一次:
var hiddenRequestSource = '<div id="requestedSource" style="display: none;">';
hiddenRequestSource += request.source;
hiddenRequestSource += '</div>';
$('body').append(hiddenRequestSource);
var myResults = $("#requestedSource").find("a.something").first().text();
$("#requestedSource").empty();