【淘宝留言输入框】发现一个难题,通过JS代码无法修改其中内容

新手上路,请多包涵

在淘宝下单的时候,无聊玩了一下代码,结果发现,竟然不能通过控制台js代码操作这个输入框的值!真的很神奇,试过别的网站,无论用什么框架,vue/react等,都是可以操作这里的值的。唯独淘宝这个输入框,研究半天没有发现可行的方法。很想知道里边是什么原理,求大神解答。

贴出我之前的代码:

textareaDom = document.querySelector('.textarea__wrapper .next-input.next-input-textarea.textarea__input textarea'); // 获取dom
textareaDom.value = 'ffff'; // 设置value
textareaDom.dispatchEvent(new Event('change')); // 触发change事件
// 试过其它事件 input / textInput / keypress / blur 都不行

淘宝留言问题.png

阅读 3.5k
3 个回答
✓ 已被采纳新手上路,请多包涵

经过反复的调试,发现一个可行的方法,大概就是要顺序触发focus => change => blur
监听focus事件设置输入值。

function insertText(memoText) {
    let textareaDom = document.querySelector('.textarea__input textarea');
    textareaDom.addEventListener("focus", function() { // 监听focus
        textareaDom.value = memoText;
    });
    textareaDom.dispatchEvent(new Event('focus', {bubbles: true, cancelable: true}))
    textareaDom.dispatchEvent(new Event('change', {bubbles: true, cancelable: true}))
    textareaDom.dispatchEvent(new Event('blur', {bubbles: true, cancelable: true}))
}
新手上路,请多包涵

你要触发的是焦点,不是变化

我试了你的代码可以修改啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题