这是我的第一个问题,所以我会尝试提供所需的尽可能多的信息。首先,我的代码中有两个问题,一个是我的扩展程序读取了错误的数据。
而不是jQuery提供的数据,它读取jQuery代码本身,输出应该是“1 000 kr”,而是显示"$("#v4").text();"
。这真是太傻了。我的background.js中的代码是,
chrome.extension.onMessage.addListener(function(message,sender,sendResponse){
if(message.text == "getStuff")
sendResponse({type: ' $("#v4").text(); '});
});
我的popup.js中的代码是,
chrome.extension.sendMessage({text:"getStuff"},function(response){
if(response.type != 0)
$(".cash").append(response.type);
});
我的第二个问题是我的好人>
没有工作,因为它应该工作。当我在浏览器控制台中尝试代码时,我得到正确的输出为true / false。但在我的代码中它不起作用,因为它应该工作,
I.E如果输出为真,它应该触发click();
事件,但它永远不会。我甚至尝试过parseFloat(),parseInt()和text()。我尝试了许多不同的方法,但没有一个工作,他们在控制台工作但不在代码中工作。我的其他代码工作正常,但这个很傻。
$('.deposit').on('click', function(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
if($("#v4").html().replace(" ", "").replace("kr", "") > 500){
chrome.tabs.executeScript(tabs[0].Id, {code: 'document.getElementById("i4").click();'});
}
});
});
答案 0 :(得分:0)
你的两个问题很容易解决:
在第一个代码段中,您实际上发送了一个字符串(即'$("#v4").text();'
)而不是元素的文本值 ,显然,你会收到一个字符串作为回应。所以要解决这个问题,您只需删除引号和分号(在对象内不允许),这里是正确的代码:
chrome.extension.onMessage.addListener(function(message, sender, sendResponse){
if(message.text == "getStuff") sendResponse({type: $("#v4").text()});
});
你的第二个问题只是一个愚蠢的错字:你正在写tabs[0].Id
而不是tabs[0].id
。 .id
对象的tab
属性为小写。你的代码应该是:
chrome.tabs.executeScript(tabs[0].id, {code: 'document.getElementById("i4").click();'});