扩展读取了错误的数据 + 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();'}); 
    }
  });
}); 

你的两个问题很容易解决:

  1. 在第一个代码段中 您实际上发送的是字符串(即 '$("#v4").text();'而不是文本值 元素,显然,您将收到一个字符串作为响应。因此,要解决此问题,您只需 删除引号和分号 (对象内不允许这样做),这是正确的代码:

    chrome.extension.onMessage.addListener(function(message, sender, sendResponse){
        if(message.text == "getStuff") sendResponse({type: $("#v4").text()});
    });
    
  2. 你的第二个问题只是一个愚蠢的错字:你写的是 tabs[0].Id 而不是 tabs[0].idtab 对象的 .id 属性 是小写的。您的代码应该是:

    chrome.tabs.executeScript(tabs[0].id, {code: 'document.getElementById("i4").click();'}); 
    

注意:自 2021 年 1 月起,使用 Manifest V3 with chrome.scripting.executeScript() 而不是 chrome.tabs.executeScript()