javascript - 使用 javascript 引发 Facebook.com 上的事件

标签 javascript html facebook google-chrome google-chrome-extension

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";

textarea

如果能够模拟调用链接预览的真实按键,甚至直接调用链接预览来实现此行为,我们将不胜感激。

最佳答案

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/

相关文章:

javascript - 在黑莓上更改 CSS

javascript - 在通过 JavaScript 提交之前更改表单值

javascript - 使用 Javascript 和 HTML 表单向 Facebook 提交图像

android - 如何更改 Facebook 登录身份验证屏幕中的默认应用程序图标

javascript - 在 span 中对 textchange 调用函数

javascript - TradingView 未在 Vue 挂载钩子(Hook)中定义

javascript - 在 Firefox 的引导模式下,Sweet Alert 中的文本框无法聚焦

javascript - 在javascript中向按钮添加 'data-toggle'属性

css - select 标签在 Firefox 中比在 Chrome 中低一个像素

javascript - 使 Facebook 页面插件响应(到处搜索,找不到解决方案)