gpt4 book ai didi

javascript - Chrome.tabs.executeScript - 标签未定义

转载 作者:行者123 更新时间:2023-12-03 16:50:44 25 4
gpt4 key购买 nike

我正在尝试编写一个 chrome 扩展,它有一个名为“btn3”的按钮。当我在 chrome 扩展 (popup.html) 中点击那个按钮时,它会点击网页上的一个按钮。网页上的按钮具有以下 id:“regular-secondary-button send-message”

2个问题:

  • 我在以下代码中收到 chrome.tabs.executeScript 的“选项卡未定义”错误。我该如何解决?
  • 我在 content_scripts.js 中写错了什么吗?

  • 谢谢!

    chrome扩展窗口中按钮的脚本
    document.addEventListener('DOMContentLoaded', function (){
    document.getElementById('btn3').addEventListener('click', sendInMail)
    });

    sendInMail = function(){


    chrome.tabs.executeScript(tabs[0], {file: "content_script.js"});

    }

    content_scripts.js
    alert("content_script is working!");

    function clickSendInMailButton() {
    var SendInMailButton = document.getElementsByClassName("regular-secondary-button send-message"),

    SendInMailButton.click();
    }

    clickSendInMailButton();

    Manifest.json
    {
    "manifest_version": 2,

    "name": "LinkedIn Assistant",
    "description": "This extension makes a LSS AE successful.",
    "version": "1.0",

    "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
    },

    "content_scripts": [
    {
    "matches": ["http://*/*", "https://*/*"],
    "js": ["content_script.js"]
    }
    ],
    "chrome_url_overrides" : {
    "newtab": "newtab.html"
    },

    "background": {
    "scripts": ["bg.js"]
    },

    "permissions": [
    "tabs", "<all_urls>"
    ]


    }

    最佳答案

    the error of "tabs are not defined"



    tabs[0] - 你需要找到它。您的脚本在 popup.html 的上下文中执行。我希望 popup.html 包含
    <head>
    ...
    <script src="popup.js"></script>
    </head>



    Script of the button in chrome extension window



    来自 popup.js。而且您永远不会尝试在 popup.html 中运行代码。

    因此,在这种情况下,没有人知道 tabs[0] .您需要询问 chrome 哪个窗口和哪个选项卡现在处于事件状态。可以像 ShwetaM 写的那样,或者像这样 from samples
    chrome.windows.getCurrent(function (currentWindow) {
    chrome.tabs.query({ active: true, windowId: currentWindow.id }, function (activeTabs) {
    activeTabs.map(function (tab) {
    chrome.tabs.executeScript(tab.id, { file: 'content_script.js', allFrames: false });
    });
    });
    });

    或者你可以在没有 tab.id, 的情况下尝试
    chrome.tabs.executeScript({ file: 'content_script.js', allFrames: false });

    因为在这种情况下,脚本将在 the active tab of the current window 中运行

    当您在 Manifest.json 中指定 "content_scripts": 时创建选项卡和 every refresh 时将执行脚本.我不确定,但可能在加载 DOM 之前。但是,您不应指定 "content_scripts":在 Manifest.json 中,因为 this content script's code will be always injected

    此外,您必须确保事件选项卡包含您正在寻找的按钮。使用 console.dir对于某些对象,尤其是函数中的参数; console.log对于一些文本; debugger为了愉快的调试。

    关于javascript - Chrome.tabs.executeScript - 标签未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694611/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com