我正在尝试使用普通的JS或Jquery自动提交对Steemit帖子的回复。
我使用了以下JavaScript代码,但该按钮保持禁用状态,因此不允许发布回复/评论。
如何模拟文本区域上的keydown / keypress / keyup事件,以模拟用户“经典”交互以发送回复?
谢谢
目标示例:https://steemit.com/usa/@gaottantacinque/happy-4th-of-
july
在开发工具控制台中:
function nap (durationMs) {
new Promise(resolve => setTimeout(() => resolve(), durationMs))
}
async function replyToPost() {
var replyBtn = document.getElementsByClassName("PostFull__reply")[0]
.getElementsByTagName('a')[0];
replyBtn.click();
await nap(1000);
var textarea = document.getElementsByTagName('textarea')[0];
const msg = 'My programmatically generated comment goes here';
textarea.focus();
textarea.click();
textarea.value = msg; // textarea.innerHTML = msg; textarea.innerText = msg;
await nap(100);
var postReplyBtn = document.querySelectorAll('[type=submit]')[1];
// postReplyBtn.disabled = false;
postReplyBtn.click();
}
replyToPost();
注意:此代码将填充文本区域,但该按钮仍处于禁用状态。只需手动单击文本区域,然后键入任何内容即可启用按钮。
此外,例如,在背景上单击后,以编程方式插入的textarea值会消失,但在正常输入时不会消失。
经过一切尝试后,我发现问题似乎是React触发textareas的onchange时的一个错误。
有关该错误的更多信息
有一种解决方法。
function setNativeValue(element, value) {
const valueSetter = Object.getOwnPropertyDescriptor(element, 'value').set;
const prototype = Object.getPrototypeOf(element);
const prototypeValueSetter = Object.getOwnPropertyDescriptor(prototype, 'value').set;
if (valueSetter && valueSetter !== prototypeValueSetter) {
prototypeValueSetter.call(element, value);
} else {
valueSetter.call(element, value);
}
}
var textarea = document.getElementsByTagName('textarea')[0];
setNativeValue(textarea, 'My automated comment here');
textarea.dispatchEvent(new Event('input', { bubbles: true }));
如何以编程方式从java代码填充旋转器? 我在布局中有一个旋转器,如下所示:
问题内容: 我的任务是使用React构建的抓取网站。我正在尝试填写输入字段,并使用javascript注入页面(移动设备中的selenium或webview)来提交表单。这在其他所有站点+技术上都像魅力一样起作用,但是React似乎是一个真正的痛苦。 所以这是示例代码 我的值在DOM输入元素上更改,但是React不会触发change事件。 我一直在尝试多种不同的方法来使React更新状态。 徒劳无
我的要求是在不创建任何外部文件的情况下加载数据,我正在寻找类似于以下内容的东西:
使用 lavas init 创建的模板项目中,在以下场景下都会以编程方式使用 Lavas: server.dev.js 开发环境下的 SPA/SSR 模式。 server.prod.js 生产环境下的 SSR 模式。 可见以编程方式使用 Lavas 的主要场景就是 SSR 模式,而在 SPA 模式下仅仅是供开发服务器使用。因此,如果开发者选择了 SSR 模式,阅读下面的内容将十分有帮助: 如何选择
我想以编程方式为RadioGroup添加边距或填充,但它不起作用。 单选按钮: Java代码: 我尝试使用和,但它不起作用
问题内容: 当我需要保存一个对象列表时,每个对象都应保存在它自己的事务中(这样,如果一个对象失败了,它们就不会全部失败),我可以这样做: 我之所以使用,是因为如果一本书无法保存并且交易被回滚,则该会话将无效,这将阻止后续书籍的保存。但是,这种方法存在两个问题: 有点冗长 即使上一本书成功,也会为每本书创建一个新的会话 有没有更好的办法?我发生的一种可能性是依赖注入Hibernate,然后执行此操作