使用javascript在Facebook.com上引发事件

使用javascript在Facebook.com上引发事件,javascript,html,facebook,google-chrome,google-chrome-extension,Javascript,Html,Facebook,Google Chrome,Google Chrome Extension,Facebook在每个群组页面的顶部都有一个文本区域,允许用户向群组发布消息。我已经创建了一个chrome扩展,成功地将文本添加到该文本区域 我的公司将使用此扩展来减少特定任务的工作时间 在邮件包含链接的情况下,Facebook会自动添加一个预览框,其中包含已提交URL的元数据,而当TextArea通过$()更改时不会发生这种情况。value=“my text” 我一直试图唤起这种行为,并以多种方式强迫它使用chrome控制台/扩展为我的消息创建链接,唯一触发它的实际上是在文本区域中键入(而不是

Facebook在每个群组页面的顶部都有一个文本区域,允许用户向群组发布消息。我已经创建了一个chrome扩展,成功地将文本添加到该文本区域

我的公司将使用此扩展来减少特定任务的工作时间

在邮件包含链接的情况下,Facebook会自动添加一个预览框,其中包含已提交URL的元数据,而当TextArea通过$()更改时不会发生这种情况。value=“my text”

我一直试图唤起这种行为,并以多种方式强迫它使用chrome控制台/扩展为我的消息创建链接,唯一触发它的实际上是在文本区域中键入(而不是使用代码/chrome扩展)

使用console/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
s没有
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'));

不确定我是否理解正确:是否要预先填充邮件?因为这肯定是不允许的。这是供个人使用的内部脚本更新后您是否尝试在元素上触发
keyup
?尝试了多种方法,包括:document.getElementsByName(“xhpc_message_text”)[0]。keyup();TypeError:undefined不是一个函数,你知道吗?谢谢,这确实会在文本区域触发事件。但是文本没有被输入到文本框中,可能因此没有创建链接附件,有什么线索吗?在Facebook没有创建链接附件的文本区域实际触发事件后,Facebook没有在这里使用事件处理程序?那么,当手动键入一个空格时,为什么会调用预览呢?这些是Textarea的事件侦听器,我尝试将它们全部启动,但没有成功:感谢使用粘贴事件解决了这一问题。