Javascript 调查表自动滑块随机化
当我在网页上(主要是在Qualtrics或Surveymonkey等网络调查表单上)遇到滑块位置(类型范围)时,我试图找出一种自动随机化滑块位置的方法。我想将这个滑块随机化添加到我在下面演示的已经存在的自动填充中。但是,首先,这里有几个我想要自动化的滑块类型的例子(使用CSS/HTML): & 目前,我正在使用以下脚本在页面加载时随机自动填充调查表单(单选按钮、文本字段等)。我想在此脚本中添加同样的滑块随机化:Javascript 调查表自动滑块随机化,javascript,slider,greasemonkey,autofill,tampermonkey,Javascript,Slider,Greasemonkey,Autofill,Tampermonkey,当我在网页上(主要是在Qualtrics或Surveymonkey等网络调查表单上)遇到滑块位置(类型范围)时,我试图找出一种自动随机化滑块位置的方法。我想将这个滑块随机化添加到我在下面演示的已经存在的自动填充中。但是,首先,这里有几个我想要自动化的滑块类型的例子(使用CSS/HTML): & 目前,我正在使用以下脚本在页面加载时随机自动填充调查表单(单选按钮、文本字段等)。我想在此脚本中添加同样的滑块随机化: // ==/UserScript== (function() {
// ==/UserScript==
(function() {
// Save a random number
var modifier = Math.floor(Math.random() * 9000000);
// Create a fake user data
var user = {
pass : modifier + "",
mail : modifier + '@Example.com'
};
// Array to save data
var save_data = [];
// Check window for tags
function check(win, tagName) {
try {
// Get tags
tagName = win.document.getElementsByTagName(tagName)
} catch (e) {
// Not found - Empty array
tagName = []
}
// For each tag
for (i = 0; i < tagName.length; i++) {
// This tag
var tag = tagName[i];
// Exclude read-only or desabled
if (tag.readOnly || tag.disabled) continue;
// Get tag values
var name = tag.name;
var type = tag.type;
var value = tag.value;
// If Check box
if ('checkbox' == type){
tag.checked = Math.random() > .5;
}
// If password
else if ('password' == type){
value = user.pass;
// Update tag value
tag.value = value;
}
// If text
else if ('text' == type) {
// If mail
if(name.match(/mail/i)){
value = user.mail;
}
// Update tag value
tag.value = value;
}
// If radio
else if ('radio' == type) {
// If data don't exist
if (!save_data[name]) {
save_data[name] = 1;
}else{
save_data[name] ++;
}
// Check it with probabilities (depending on the length)
tag.checked = Math.random() < (1 / save_data[name]);
}
// If select
else if (type.match(/^select/)){
// Set a random options
tag.selectedIndex = Math.random() * (tag.options.length - 1) + 1;
}
}
// Try to set focus to the input
if (tag) try {
tag.focus()
} catch (e) {}
}
function recursive(win) {
check(win, 'password');
check(win, 'select');
check(win, 'input');
// For each frame on page
for (var i = 0; i < win.frames.length; i++) {
// Check all frames inside
recursive(win.frames[i])
}
}
recursive(window);
}());
/==/UserScript==
(功能(){
//保存一个随机数
var修饰符=Math.floor(Math.random()*9000000);
//创建假用户数据
变量用户={
通过:修饰符+“”,
邮件:modifier+'@Example.com'
};
//用于保存数据的数组
var save_data=[];
//检查窗口中的标签
函数检查(win,标记名){
试一试{
//获取标签
标记名=win.document.getElementsByTagName(标记名)
}捕获(e){
//找不到-空数组
标记名=[]
}
//对于每个标签
对于(i=0;i.5;
}
//如果密码
else if('password'==type){
值=user.pass;
//更新标记值
tag.value=值;
}
//如果文本
else if('text'==类型){
//如果邮寄
if(name.match(/mail/i)){
value=user.mail;
}
//更新标记值
tag.value=值;
}
//中频无线电
else if('radio'==类型){
//如果数据不存在
如果(!保存_数据[名称]){
保存_数据[名称]=1;
}否则{
保存_数据[名称]+;
}
//用概率检查(取决于长度)
tag.checked=Math.random()<(1/保存数据[名称];
}
//如果选择
else if(键入.match(/^select/)){
//设置一个随机选项
tag.selectedIndex=Math.random()*(tag.options.length-1)+1;
}
}
//尝试将焦点设置为输入
如果(标记)尝试{
tag.focus()
}捕获(e){}
}
函数递归(win){
检查(赢,“密码”);
选中(赢,'选择');
检查(赢,'输入');
//对于页面上的每个帧
对于(var i=0;i
因为我知道滑块属于输入类型范围,所以我添加的代码需要从如下内容开始:
else if ('range' == type) {
if (!save_data[name]) {
save_data[name] = 1;
}else{
save_data[name] ++;
}
tag.checked = Math.random() < (1 / save_data[name]);
}
else if('range'==type){
如果(!保存_数据[名称]){
保存_数据[名称]=1;
}否则{
保存_数据[名称]+;
}
tag.checked=Math.random()<(1/保存数据[名称];
}
如您所见,我是根据脚本的单选按钮部分编写代码的。不幸的是,这似乎不起作用,我目前无法找到如何选择新滑块位置或启动滑块移动的语法。我认为它的工作原理与可点击的复选框或单选按钮不同。我知道滑块的范围通常在CSS/HTML中指定,所以这显然需要考虑。任何和所有的帮助都将是绝对美妙的。提前感谢。:
更改滑块控件的值:
document.getElementById("myRange").value = "75";
将其稍微调整为随机(如果您的输入范围在0到100之间):
谢谢你的回复。你发布的数学部分我可能会补充随机输入值。不幸的是,元素ID在我将代码应用到的站点之间会有所不同。我需要的东西,可以操纵所有这些滑块的固有输入=“范围”特性
document.getElementById("myRange").value = Math.floor(Math.random() * 100);