如何在页面中搜索文本并使用JavaScript单击包含文本的按钮?
假设网站上有一个字符串“单击我”。我需要点击这个文本,假设它是一个使用JavaScript的链接。我正在构建一个chrome扩展来实现这一点。但我的代码并非适用于所有情况 这是到目前为止我的代码 manifest.json如何在页面中搜索文本并使用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", "&
{
"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元素。