Facebook 在每个群组页面顶部都有一个 TextArea,允许用户向群组发布消息,我创建了一个 chrome 扩展程序,可以成功地将文本添加到该 TextArea。
我的公司将使用此扩展来减少特定任务的工作时间。
在消息包含链接的情况下,Facebook 会自动添加一个预览框,其中包含所提交 URL 的元数据,当通过 $().value = "my text"; 更改 TextArea 时,不会发生这种情况;
我一直在尝试唤起这种行为,并以多种方式强制它使用 chrome 控制台/扩展程序为我的消息创建链接,唯一触发它的实际上是在 TextArea 中输入(不使用代码/chrome扩展名)
使用控制台/chrome 扩展,可以这样更改 TextArea 的值:
document.getElementsByName("xhpc_message_text")[0].focus();
document.getElementsByName("xhpc_message_text")[0].value = "I love www.stackoverflow.com";
document.getElementsByName("xhpc_message")[0].value = "I love www.stackoverflow.com";
如果能够模拟调用链接预览的真实按键,甚至直接调用链接预览来实现此行为,我们将不胜感激。
最佳答案
HTMLElement
没有 keyup
方法。要以编程方式触发事件,您必须使用 EventTarget.dispatchEvent
。由于所有 HTMLElement
都是 EventTarget
的实例(HTMLElement.prototype instanceof EventTarget
),因此您可以执行以下操作:
var keydown = new Event('keydown');
document.querySelector('[name=xhpc_message_text]').dispatchEvent(keydown);
另请注意,仅当链接后有更多字符时,Facebook 才会预览链接。
var messageBox = document.querySelector('[name=xhpc_message_text]');
messageBox.dispatchEvent(new Event('focus'));
messageBox.value = 'www.stackoverflow.com ';
messageBox.dispatchEvent(new Event('keydown'));
关于javascript - 使用 javascript 引发 Facebook.com 上的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26906456/