【发布时间】:2015-03-07 02:03:54
【问题描述】:
我正在编写一个 chrome 扩展,我想将标签添加到 YouTube 编辑页面,特别是不止一个。我可以将标签文本作为字符串插入,每个标签用逗号分隔。为了让 YouTube 采用这个逗号分隔的字符串并将其正确拆分为标签,标签插入空间需要接收 keyup 或 change 事件。
我查看了很多关于触发关键事件的堆栈溢出帖子,但建议的代码似乎都不适合我。
不幸的是,当我尝试触发事件时,使用以下代码时出现错误:
document.getElementsByClassName("video-settings-add-tag")[0].focus();
document.getElementsByClassName("video-settings-add-tag")[0].keyup();
错误状态为“Uncaught TypeError: undefined is not a function”;焦点代码有效,所以我肯定针对正确的元素。
这很奇怪,因为其他事件(实际上并没有做我需要的)确实有效,即聚焦、模糊和点击。 YouTube 具有绑定到 video-settings-add-tag 元素的事件侦听器,我需要触发该元素以使其将字符串拆分为标签。
有人知道为什么这不起作用吗?
附:我还尝试定义更改事件以查看是否可行,并且此代码没有引发错误,但也没有做任何事情:
var event = new KeyboardEvent('change');
document.getElementsByClassName("video-settings-add-tag")[0].dispatchEvent(event);
document.getElementsByClassName("video-settings-add-tag")[0].change;
感谢您的任何反馈。
【问题讨论】:
-
这是在附加到窗口的内容脚本中吗?
-
它位于扩展清单中 content_scripts 下定义的 eventPage.js 文件中。我是扩展程序编写的新手,所以我不知道这是否正确,但是该文件中的所有其他代码都可以在页面上正常工作...
标签: jquery javascript-events google-chrome-extension