【发布时间】:2019-06-09 04:22:19
【问题描述】:
早安,
我知道这个问题已经被问过很多次了。我到处搜索以使其正常工作,但似乎有些事情发生了变化,答案不再起作用。
在 YouTube 上,当我在控制台中运行此模拟点击函数时。它有效。
function simulateClick() {
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window
});
var cb = document.getElementsByClassName("ytp-play-button")[0]; //element to click on
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
那是因为有一个按钮叫做“ytp-play-button”。
但是,当我将它带到 YouTube TV(以前的leanback)时。这是行不通的。那里的 div 函数有一个“role=button”。
这是负责播放按钮的 div。
<div class="toggle-button selected material-icon-play-arrow toggle-selected transport-controls-toggle-button" tabindex="-1" role="button" style=""> <div class="background"></div> <span class="label">Pause</span></div>
所以我将“ytp-play-button”更改为“material-icon-play-arrow”,但即使它得到了正确的类。这是行不通的。
任何指针将不胜感激。谢谢你。
P.S.:这是一个纯 JavaScript 问题,不是 jQuery 问题。
Edit#1:当我尝试在控制台中像这样运行 onclick 时
document.getElementsByClassName("material-icon-play-arrow")[0].onclick()
我收到了这个错误。
未捕获的类型错误:document.getElementsByClassName(...)[0].onclick 不是函数 在:1:64 (匿名)@ VM7969:1
【问题讨论】:
-
您能否说明您是否在将 onclick 事件添加到 div 或其他内容时遇到问题?
-
@MauricioAriasOlave 我尝试将其添加为“document.getElementsByClassName("material-icon-play-arrow")[0].onclick()" 但它仍然没有用。我有一个错误,我相信。如果我做错了,你愿意澄清一下吗,谢谢!
-
阿曼达,请edit您的问题并添加描述错误。
-
完成。希望这会有所帮助。
-
@MauricioAriasOlave 您能否将其发布为答案,以便我接受。感谢您的所有帮助:)。
标签: javascript html google-chrome youtube