繁体   English   中英

为什么我不能在其中输入文字<input>带有 javascript 代码的字段? 文字闪回原值

[英]Why can't I input text into this <input> field with javascript code? The text flashes back to original value

观看视频以了解我的意思https://youtu.be/kvdVNwTjw5c谢谢!

我正在尝试自动登录这个网站shopee.sg/buyer/login我需要先输入登录名,但我的代码无法做到这一点,它总是在代码执行后变回原始值。 我使用了代码document.getElementsByClassName("_56AraZ")[0].value = "my username"; document.getElementsByClassName('_56AraZ')[0].setAttribute('value',"my username"); 该字段中的文本出现在屏幕上要更改,但是在我单击其他字段或单击其他位置后,文本闪回到以前的值,它并没有真正改变。 我知道这个代码可以在其他网站上成功,但是这个网站对我来说很棘手? 谁能帮我成功地在这个字段中输入文本? 谢谢!

可能还有其他东西也尝试在该字段中写入 - 它可能是其他脚本或浏览器(保存的表单数据)。 我建议您使用 setTimeout function 将脚本延迟一些荒谬的时间(例如 2 秒或更长时间),如果有帮助,请将延迟降低到可以工作但可以接受的值。 所以你的脚本是写入该字段的最后一件事。 和/或您可以尝试在 window.load 事件上运行它。

如果我从控制台运行它,它可以工作: document.getElementsByClassName("_56AraZ")[0].value = "my username";

因此,您可能会在创建输入之前运行您的代码。 让我们检查一下。 在 setTimeout 回调中,插入:

const field = document.querySelector("._56AraZ");
if (field) {
    field.value = "my username";
} else {
    alert('No input field!');
}

如果您尝试过早填写该字段,这应该会让您知道。 如果是这种情况,您必须以某种方式知道何时创建输入字段并在它发生后运行您的代码。 如何做到这一点 - 我不能告诉你,因为我对你网站的架构一无所知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM