扩展读取了错误的数据 + gt> 不起作用
Extension reads wrong data + gt> doesn't work
这是我的第一个问题,所以我会尽量提供所需的信息。首先我的代码有两个问题,一个是我的扩展读取了错误的数据。
它读取 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();'});
}
});
});
你的两个问题很容易解决:
在第一个代码段中 您实际上发送的是字符串(即 '$("#v4").text();'
)而不是文本值 元素,显然,您将收到一个字符串作为响应。因此,要解决此问题,您只需 删除引号和分号 (对象内不允许这样做),这是正确的代码:
chrome.extension.onMessage.addListener(function(message, sender, sendResponse){
if(message.text == "getStuff") sendResponse({type: $("#v4").text()});
});
你的第二个问题只是一个愚蠢的错字:你写的是 tabs[0].Id
而不是 tabs[0].id
。 tab
对象的 .id
属性 是小写的。您的代码应该是:
chrome.tabs.executeScript(tabs[0].id, {code: 'document.getElementById("i4").click();'});
注意:自 2021 年 1 月起,使用 Manifest V3 with chrome.scripting.executeScript()
而不是 chrome.tabs.executeScript()
。
这是我的第一个问题,所以我会尽量提供所需的信息。首先我的代码有两个问题,一个是我的扩展读取了错误的数据。
它读取 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();'});
}
});
});
你的两个问题很容易解决:
在第一个代码段中 您实际上发送的是字符串(即
'$("#v4").text();'
)而不是文本值 元素,显然,您将收到一个字符串作为响应。因此,要解决此问题,您只需 删除引号和分号 (对象内不允许这样做),这是正确的代码:chrome.extension.onMessage.addListener(function(message, sender, sendResponse){ if(message.text == "getStuff") sendResponse({type: $("#v4").text()}); });
你的第二个问题只是一个愚蠢的错字:你写的是
tabs[0].Id
而不是tabs[0].id
。tab
对象的.id
属性 是小写的。您的代码应该是:chrome.tabs.executeScript(tabs[0].id, {code: 'document.getElementById("i4").click();'});
注意:自 2021 年 1 月起,使用 Manifest V3 with chrome.scripting.executeScript()
而不是 chrome.tabs.executeScript()
。