如何在页面中搜索文本并使用JavaScript单击包含文本的按钮?

如何在页面中搜索文本并使用JavaScript单击包含文本的按钮?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,假设网站上有一个字符串“单击我”。我需要点击这个文本,假设它是一个使用JavaScript的链接。我正在构建一个chrome扩展来实现这一点。但我的代码并非适用于所有情况 这是到目前为止我的代码 manifest.json { "manifest_version": 2, "name": "Such Activity", "description": "Wow", "version": "1.0", "permissions": ["tabs", "&

假设网站上有一个字符串“单击我”。我需要点击这个文本,假设它是一个使用JavaScript的链接。我正在构建一个chrome扩展来实现这一点。但我的代码并非适用于所有情况

这是到目前为止我的代码

manifest.json

{
    "manifest_version": 2,
    "name": "Such Activity",
    "description": "Wow", 
    "version": "1.0", 
    "permissions": ["tabs", "<all_urls>"], 
    "browser_action": { 
        "default_icon": {
            "19": "images/icons/19.png",
            "38": "images/icons/38.png"
        },
        "default_popup": "popup.html"
    },
    "icons": {
        "16": "images/icons/16.png",
        "19": "images/icons/19.png",
        "38": "images/icons/38.png",
        "64": "images/icons/64.png",
        "128": "images/icons/128.png"
    }
}
content\u script.js

function injectTheScript() {
        chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        // query the active tab, which will be only one tab
        //and inject the script in it
        chrome.tabs.executeScript(tabs[0].id, {file: "content_script.js"});
    });
}
document.getElementById('clickactivity').addEventListener('click', injectTheScript);
function clickSome() {
    function getElementsByText(text) {
        function rec(ele, arr)
        {
            if (ele.childNodes.length > 0) 
                for (var i = 0; i < ele.childNodes.length; i++) 
                    rec(ele.childNodes[i], arr);
            else if (ele.nodeType == Node.TEXT_NODE && 
                     ele.nodeValue.indexOf(text) != -1) 
                arr.push(ele.parentNode);
            return arr;
        }
        return rec(document.body, []);
    }
    var x = 'Text';
    var my = getElementsByText(x.ignoreCase);
    var mod =my[0].className;
    console.log(my);
    document.getElementsByClassName(mod)[0].click();
}
clickSome();
函数clickSome(){
函数getElementsByText(文本){
功能记录(ele、arr)
{
如果(ele.childNodes.length>0)
对于(变量i=0;i
popup.html

<!doctype html>  
<html>  
    <head><title>activity</title></head>  
<body>  
    <button id="clickactivity">click</button>  
    <script src="popup.js"></script> 
</body>
</html>

活动
点击

如果按钮使用特定元素,您可以直接查找,否则请参阅带有NodeFilter.SHOW_TEXT的TreeWalker API示例。另外,不使用选项卡和所有URL权限。感谢您提供完整的代码。然而,你失踪了**►特定的问题或错误**。没有具体说明您的具体问题,我们不知道如何帮助您。@Makyen问题是我如何使用javascript单击包含文本的按钮。@VishnuDev,这不是对“问题”的合理陈述。这是你的愿望的陈述。您说过“但我的代码并不适用于所有情况”。您需要告诉我们实际发生了什么(即“不工作”的含义),并指定哪些情况有效,哪些情况无效。如果按钮内部有两个span元素,而最后一个span中有文本,则getelementsbytext函数将获取不正确的元素,而不是button元素。