javascript onsubmit更改字段值

javascript onsubmit更改字段值,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在编写一个javascript chrome扩展,其中包含一个content_脚本,该脚本: 读取用户提交的数据 在需要时修改用户数据 删除用户可能已插入并删除的前缀“myprefix:” 改为提交修改后的文本 我已经编写了一些代码,成功地更新了所需的值(我可以在提交时看到输入字段值被更改,就在浏览器离开页面之前)。但是,有时会提交未修改的值(删除前缀之前的值),这种情况会间歇性发生 到目前为止,我有以下代码: document.addEventListener('DOMContentL

我正在编写一个javascript chrome扩展,其中包含一个content_脚本,该脚本:

  • 读取用户提交的数据
  • 在需要时修改用户数据
  • 删除用户可能已插入并删除的前缀“myprefix:”
  • 改为提交修改后的文本
我已经编写了一些代码,成功地更新了所需的值(我可以在提交时看到输入字段值被更改,就在浏览器离开页面之前)。但是,有时会提交未修改的值(删除前缀之前的值),这种情况会间歇性发生

到目前为止,我有以下代码:

document.addEventListener('DOMContentLoaded', function () {
    onsubmitModifier();
}

function onsubmitModifier() { 
    for (var i = 0; i < document.forms.length; i++) {
        document.forms[i].addEventListener("submit", function () {
            var elementList = document.getElementsByTagName("INPUT");
            for (var i = 0; i < elementList.length; i++) {
                if (elementList[i].value.toLowerCase().startsWith("myprefix:")) {
                    // data modification is removed for testing
                    elementList[i].value = elementList[i].value.substring("myprefix:".length);
                }
            }
        }
    }
}
document.addEventListener('DOMContentLoaded',函数(){
onsubmitModifier();
}
函数onsubmitModifier(){
对于(var i=0;i
您可以先尝试停止默认事件,然后在
setTimeout
块中调用
form.submit()

是否缺少
DOMContentLoaded
事件?您说它是“间歇性”发生的:发生这种情况的情况是否有任何模式?是否有可能在
DOMContentLoaded
之后动态添加表单?@Xan,我猜如果在
DOMContentLoaded
之后添加表单,那么我就不会得到“提交”事件,我正在得到它们(正在修改值,但提交的值并不总是修改的值)。这只是一个提示(我没有时间测试):在单个表单的提交处理程序中,您正在循环页面上的每个输入元素,即使它不是当前表单的一部分