javascript - 在 document_end 填写表单时,我的脚本会单击一个按钮,该按钮会重新加载页面,以便再次运行。如何停止它运行?
问题描述
我正在编写一个小程序来使用脚本自动填充字段。
然后它提交表单。
但是,一旦提交表单,它就会重新加载页面并且脚本再次运行。
因此,它无限次地添加用户。
理想情况下,我想添加一个用户填写不同的信息,然后为最多 100 个用户添加下一个。
我不确定如何停止这个无限循环,我假设当页面重置时脚本也会重新启动。
我
我尝试放置一个运行我的脚本的函数,但是由于我的脚本在页面加载时运行,即使该函数处于 for 循环中,它也会不停地运行。
它也很难测试,因为无限循环是一个你无法真正摆脱的问题,除非它首先运行很多次。
我的清单代码如下:
{
"name": "Begginer",
"version": "1.0",
"manifest_version": 2,
"description": "Fill",
// "permissions": [
// "activeTab",
// "*://*/*"
// ],
"content_scripts": [
{
"matches": ["website"],
"run_at": "document_end",
"js": ["Fill.js"]
}
],
"icons":
{
"16": "images/puppy16.png",
"48": "images/puppy48.png",
"128": "images/puppy128.png"
},
"browser_action":
{
"default_icon": "images/puppy128.png"
}
}
我的 JS:
// define your username and password
var Nam='Oi Macaco';
var Gen='M';
var Nbi='123';
var Ser='Servico';
var Dna='01-01-2000';
var Dab='01-01-2000';
var Cat='categorai';
var Dis='Lunda';
var Ema='email@domain.com';
var Npa='123';
var Una='OMacaco';
// Finds Each Field
var NameF = document.getElementById('nome_new');
var SexoF = document.getElementById('sexo_new');
var NbiF = document.getElementById('num_bi');
var SerF = document.getElementById('servico');
var DnfF = document.getElementById('data_nasc_func');
var DadF = document.getElementById('data_admissao');
var CatF = document.getElementById('categoria');
var DisF = document.getElementById('distrito');
var EmaF = document.getElementById('email_new');
var PasF = document.getElementById('password_new');
var UnaF = document.getElementById('unamesso_new');
// Fills the Fields
NameF.value = Nam;
SexoF.value = Gen;
NbiF.value = Nbi;
SerF.value = Ser;
DnfF.value = Dna;
DadF.value = Dab;
CatF.value = Cat;
DisF.value = Dis;
EmaF.value = Ema;
PasF.value = Npa;
UnaF.value = Una;
//Click Button
document.getElementById('Button1').click();
一切正常,问题是它运行了无数次。
所以我假设我什至不能添加下一个用户。
一切都是假设,因为它很难测试无限循环,我并没有真正期待它。
我想我应该使用 chrome.browserAction.onClicked.addListener(function callback)
然后我应该为每个不同的用户制作一个开关。
但这似乎不是最好的方法。
帮助。谢谢。
解决方案
我通过插入以下代码解决了它:
感谢丹哈珀,
显现
{
"name": "Inject",
"version": "0.0.1",
"manifest_version": 2,
"description": "Injecting stuff",
"background": {
"scripts": [
"background.js"
],
"persistent": true
},
"browser_action": {
"default_title": "Inject!"
},
"permissions": [
"activeTab"
]
}
注入.js
(function() {
// define your username and password
var Nam='Oi Macaco';
var Gen='M';
var Nbi='123';
var Ser='Servico';
var Dna='01-01-2000';
var Dab='01-01-2000';
var Cat='categorai';
var Dis='Lunda';
var Ema='email@somethin';
var Npa='123';
var Una='OMacaco';
// Finds Each Field
var NameF = document.getElementById('nome_new');
var SexoF = document.getElementById('sexo_new');
var NbiF = document.getElementById('num_bi');
var SerF = document.getElementById('servico');
var DnfF = document.getElementById('data_nasc_func');
var DadF = document.getElementById('data_admissao');
var CatF = document.getElementById('categoria');
var DisF = document.getElementById('distrito');
var EmaF = document.getElementById('email_new');
var PasF = document.getElementById('password_new');
var UnaF = document.getElementById('unamesso_new');
// Fills the Fields
NameF.value = Nam;
SexoF.value = Gen;
NbiF.value = Nbi;
SerF.value = Ser;
DnfF.value = Dna;
DadF.value = Dab;
CatF.value = Cat;
DisF.value = Dis;
EmaF.value = Ema;
PasF.value = Npa;
UnaF.value = Una;
//Click Button
document.getElementById('Button1').click();
alert('inserted self... giggity');
})();
背景代码:
// listen for our browserAction to be clicked
chrome.browserAction.onClicked.addListener(function (tab) {
// for the current tab, inject the "inject.js" file & execute it
chrome.tabs.executeScript(tab.ib, {
file: 'inject.js'
});
});
推荐阅读
- javascript - TypeError:无法设置未定义的属性“电子邮件”
- jquery - 如何解决 IE 10 + & IE Edge 闪烁滚动问题
- python-3.x - 在python中按字节将文本文件拆分为较小的文件
- python - 烧瓶中的背景设置背景图像
- android - 无需身份验证即可获取特定应用的 Firestore 数据
- wordpress - 在 wordpress 中启用右侧类别
- database - Python:如何仅通过导入类文件(父到子)来调用另一个类方法(子)中的类方法(父)?
- android - 如何将点击事件传递给框架布局中的重叠视图
- javascript - 删除父级时如何删除子级?
- ios - 无法获取组的成员 (XMPP)