我正在使用Chrome扩展程序,它只是将所有者帐户文本框与计划帐户文本框相同。文本框在原始网站上有onblur方法,在调用许多函数后通过循环方式将数据保存到服务器。
当我更改一个文本框时,我设置了另一个文本框的值。这视觉上有效。但是我没有实际点击的文本框中的数据没有保存到网络中。 (OwnerAccount已更新,计划帐户未更新)
var tbOwnerAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber");
var tbSchedulingAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtSchedulingAccountNumber");
tbSchedulingAccount.value = tbOwnerAccount.value;
但是现在是时候将值保存到服务器了。我认为简单模糊调度帐户会调用tbSchedulingAccount的onblur()方法。没有骰子。
tbSchedulingAccount.blur();
我也尝试过:
tbSchedulingAccount.focus();
tbSchedulingAccount.select();
tbSchedulingAccount.value = tbOwnerAccount.value;
(最后有无模糊 - 用户自然会点击某处,所以如果我可以将光标放在tbSchedulingAccount文本框中,它应该自己模糊)
我尝试使用Chrome控制台调用该功能,但它可以正常工作:
tbSchedulingAccount.onblur();
但我无法实现模糊,并使用tbSchedulingAccount.blur()调用该函数;
如果有任何帮助,这里是我试图模糊的元素:
<input name="ctl00$ContentPlaceHolder1$txtSchedulingAccountNumber"
type="text" maxlength="25" id="ctl00_ContentPlaceHolder1_txtSchedulingAccountNumber"
tabindex="9" class="textbox" onblur=" MASSIVE PROPRIETARY FUNCTION"
onkeydown="javascript:if(event != null && event.keyCode == 13){
MASSIVE PROPRIETARY FUNCTION" style="width:200px;">
所以,我的主要问题是:
(我应该注意,我想从(tbOwnerAccount)调用函数的文本框在原始网站上有一个onblur,我不会搞乱,或者它不会保存到服务器上)
到目前为止,这是我的所有代码:
var tbOwnerAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber");
tbOwnerAccount.onblur = updateSchedule;
function updateSchedule(){
var tbOwnerAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber");
var tbSchedulingAccount = document.getElementById("ctl00_ContentPlaceHolder1_txtSchedulingAccountNumber");
console.log("Fired");
<CODE FOR THE ORIGINAL WEBSITE'S .ONBLUR ON tbSchedulingAccount TO FIRE>
}
感谢您提供的任何帮助!
答案 0 :(得分:1)
尝试调度blur
事件:
tbOwnerAccount.dispatchEvent(new Event('blur'))
或者直接在注入的DOM脚本中运行onblur()
:
runDOMscript(function() {
document.getElementById("ctl00_ContentPlaceHolder1_txtOwnerAccountNumber").onblur();
});
function runDOMscript(fn) {
var script = document.head.appendChild(document.createElement('script'));
script.text = '(' + fn + ')()';
script.remove();
}
请参阅解释页面代码和内容脚本代码上下文之间差异的Inject code in a page using a Content script,并说明如何在页面上下文中运行代码。