Tampermonkey - 如何在 google 搜索框中设置文本?
Tampermonkey - How to set text in the google search box?
如何使用 tampermonkey 在 google 搜索框中设置一些文本?
我尝试了以下但没有设置文本:
// ==UserScript==
// @name Google Search Test
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Testing selectors.
// @author You
// @match https://www.google.co.uk*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var textinput = document.querySelector('input.gsfi[type=text]');
textinput.value = "Cats";
})();
您的选择器是正确的。您可以通过在 JavaScript 控制台中键入代码 document.querySelector('input.gsfi[type=text]')
来简单地检查这一点。它应该显示正确的元素。
Google网站的问题是输入元素的class是在调用Tampermonkey函数后添加的(可能是通过一些JavaScript)。
因此,解决方法是在短时间间隔后检查输入元素:
function test() {
var textinput = document.querySelector('input.gsfi[type=text]');
if (textinput!==null)
textinput.value = "Cats";
else
console.log("textinput is null");
}
(function() {
'use strict';
setTimeout(test, 1000);
})();
您可以等待元素到达。只需传入一个限制和每次检查之间等待的毫秒数。
function onArrival(selector, callback, interval, limit) {
interval = interval || 1000; // Default wait time is 1 second.
limit = limit || 10; // Default number of attempts is 10.
var el = document.querySelector(selector);
if (el != null) {
if (callback != null) {
callback(el);
}
} else {
if (limit > 0) {
setTimeout(function() {
onArrival(selector, callback, interval, limit - 1);
}, interval);
} else {
console.log('Element not found!');
}
}
}
// Wait 3 seconds to load the input element.
setTimeout(function() {
var label = document.createElement('label');
label.innerHTML = 'Google Search: ';
document.body.appendChild(label);
var input = document.createElement('input');
input.setAttribute('type', 'text');
input.className = 'gsfi';
document.body.appendChild(input);
}, 3000);
// Wait 5 times, 1 second at a time, for the input element to arrive.
onArrival('input[type="text"].gsfi', function(el) {
el.value = 'Cats';
}, 1000, 5)
如何使用 tampermonkey 在 google 搜索框中设置一些文本?
我尝试了以下但没有设置文本:
// ==UserScript==
// @name Google Search Test
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Testing selectors.
// @author You
// @match https://www.google.co.uk*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var textinput = document.querySelector('input.gsfi[type=text]');
textinput.value = "Cats";
})();
您的选择器是正确的。您可以通过在 JavaScript 控制台中键入代码 document.querySelector('input.gsfi[type=text]')
来简单地检查这一点。它应该显示正确的元素。
Google网站的问题是输入元素的class是在调用Tampermonkey函数后添加的(可能是通过一些JavaScript)。
因此,解决方法是在短时间间隔后检查输入元素:
function test() {
var textinput = document.querySelector('input.gsfi[type=text]');
if (textinput!==null)
textinput.value = "Cats";
else
console.log("textinput is null");
}
(function() {
'use strict';
setTimeout(test, 1000);
})();
您可以等待元素到达。只需传入一个限制和每次检查之间等待的毫秒数。
function onArrival(selector, callback, interval, limit) {
interval = interval || 1000; // Default wait time is 1 second.
limit = limit || 10; // Default number of attempts is 10.
var el = document.querySelector(selector);
if (el != null) {
if (callback != null) {
callback(el);
}
} else {
if (limit > 0) {
setTimeout(function() {
onArrival(selector, callback, interval, limit - 1);
}, interval);
} else {
console.log('Element not found!');
}
}
}
// Wait 3 seconds to load the input element.
setTimeout(function() {
var label = document.createElement('label');
label.innerHTML = 'Google Search: ';
document.body.appendChild(label);
var input = document.createElement('input');
input.setAttribute('type', 'text');
input.className = 'gsfi';
document.body.appendChild(input);
}, 3000);
// Wait 5 times, 1 second at a time, for the input element to arrive.
onArrival('input[type="text"].gsfi', function(el) {
el.value = 'Cats';
}, 1000, 5)