2015-12-21 241 views
0

我正在尝试在Grease/Tampermonkey中编写一个脚本,它将搜索网页中的问题,然后用正确的答案填充文本框。在Tampermonkey中使用javascript进行页面搜索和文本框自动填充

这是我想出迄今:

//There are 12 options in each array 

var questions = ["fourth letter", "grass", "6x4", "NFL team", "OSU Buckeys", "35 + 15", "Yellow + Blue", "LeBron James", "Lassie", "2x9", "9x10"]; 
var answers = ["s", "green", "nut", 24, "Bengals", "gray", 50, "green", 23, "dog", 18, 90]; 
var answer = 0; 
var position = 0; 
var found = false; 

//When the window loads, the function will trigger the While loop, which will run as long as found is false. 
//The While loop triggers the For loop, which runs until the If statement has found the question. 
//The For loop will run a number of times equal to the number of variables in the questions array. 
//The if statement searches the webpage for each consecutive variable in the questions array until it finds a match. 
//When the if statement finds a match, it notes which variable in the questions array matched, and sets found to true which should trigger the end of the while loop. 

window.onload = function() { 
    while (found) { 
     for (var i = 0;i<=questions.length;i++) { 
      if (document.body.innerHTML.toString().indexOf(questions[i])) > -1 { 
       position = i; 
       found = true; 
      } else { 
       console.log ("No answer was found"); 
      }; 
     }; 
    }; 
}; 

//Once the While loop has completed, this fills the textbox on the webpage with the answer 
document.getElementById("humanverify\[input\]").innerHTML = answers[position]; 

Tampermonkey表示该代码运行。但是,该文本框不填充。我是Javascript的新手,并且在上周一直在拼凑一些代码和知识。

回答

3

发现最初是错误的,因此while循环将永远不会执行。

试试这个

var questions = ["fourth letter", "grass", "6x4", "NFL team", "OSU Buckeys", "35 + 15", "Yellow + Blue", "LeBron James", "Lassie", "2x9", "9x10"]; 
var answers = ["s", "green", "nut", 24, "Bengals", "gray", 50, "green", 23, "dog", 18, 90]; 
var answer = 0; 
var position = 0; 
var found = false; 
    window.onload = function() { 
     for (var i = 0;i<=questions.length;i++) { 
      if (document.body.innerHTML.toString().indexOf(questions[i]) > -1) { 
       position = i; 
       found = true; 
       break; 
      } 
     } 
     if(found){ 
      document.getElementById("humanverify\[input\]").innerHTML = answers[position]; 
     } 
     else{ 
      console.log ("No answer was found"); 
     } 
    } 
0

我已经一整天摆弄它,而且与满足我所有的需要的功能结果出来了。结果如下:

var answers = ["s", "green", "nut", 24, "bengals", "gray", 50, "green", 23, "dog", 18, 90]; 
var questions = ['The fourth letter in the word "Reds" is?','What color is grass?','A buckeye is a what?',"What's 6x4?",'The NFL team in Cincinnati is called the?','The OSU Buckeys are Scarlet and?','35 + 15 is?','Yellow + Blue is?','LeBron James wears #?','Lassie was a what?','2x9 is what?',"What's 9x10?"]; 
var question = document.getElementsByClassName('description')[0].innerText; 
var found = 0; 
var answer = 0; 

//browses questions variable for match to question variable, then assigns the correlating index to found, and assigns the answer to the answer variable, as pulled from the answers variable 
for (var find = 0; find <= questions.length; find++) { 
    if (question === questions[find]) { 
     found = find; 
     answer = answers[found]; 
    } 
} 

//checks the assigned radio, fills the textbox with the answer, and clicks the Vote button 
var submit = function(){ 
    document.getElementsByName('polloptionid')[3].checked = true; 
    document.getElementById("humanverify").value = answer; 
    document.getElementsByName("vote")[0].click(); 
} 

submit(); 

//allows for a slight delay so that the page can load before cycling through script again 
var reload = function() { 
    location.reload(); 
} 

setTimeout(reload, 3000);