Google音乐测试版:使用Javascript进行大拇指向上和向下游戏

Kyl*_*oer 5 javascript jquery google-chrome google-chrome-extension

我正在开发我的第一个Google Chrome扩展程序.我希望能够使用我的扩展程序点击Google音乐测试版页面上的"竖起大拇指"按钮.出于某种原因,竖起大拇指按钮似乎比随机播放,重复播放,播放,下一个和之前更复杂.对于所有这些,以下代码有效:

chrome.tabs.executeScript(tab_id,
            {
              code: "location.assign('javascript:SJBpost(\"" + command +
                    "\");void 0');",
              allFrames: true
            });
Run Code Online (Sandbox Code Playgroud)

其中command ="playPause","nextSong","prevSong","toggleShuffle","togglePlay"等.

我想了很多使用开发人员工具来跟踪堆栈跟踪并查看给SJBpost的参数.使用"thumbsUp"尝试SJBpost会返回错误.

显然这个问题仅限于较小的人群,因为不是每个人都能够查看Google音乐的来源,但如果你能帮助我,我会非常感激.

Google音乐页面上竖起大拇指的div如下所示:

<div id="thumbsUpPlayer" class="thumbsUp" title="Thumbs up"></div>
Run Code Online (Sandbox Code Playgroud)

现在,我尝试使用jQuery做到这一点:

$("#thumbsUpPlayer").click()
Run Code Online (Sandbox Code Playgroud)

但是我在javascript控制台中得到了TypeError,undefined_method消息.

任何帮助将不胜感激.我是javascript和插件的初学者,以及所有这些东西,我很高兴能将这些扩展的最后部分放在一起.

谢谢!

ant*_*r15 3

看来 Google Music Beta 实际上并不监听事件click()本身,而是基于通常在实际点击事件之前的事件:mouseover、mousedown 和 mouseup。

我不是 jQuery 专家,所以我无法确切地弄清楚为什么$("#thumbsUpPlayer").mouseover().mousedown().mouseup()不起作用(doing 也不起作用.trigger)。

无论如何,这里有一些(于 6 月 21 日测试)工作的 javascript 代码(无依赖项)。

function triggerMouseEvent(element, eventname){
    var event = document.createEvent('MouseEvents');
    event.initMouseEvent(eventname, true, true, document.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, element);
    element.dispatchEvent(event);
}

function replicateClick(element){
    triggerMouseEvent(element, 'mouseover');
    triggerMouseEvent(element, 'mousedown');
    triggerMouseEvent(element, 'mouseup');
}

function thumbsUp(){
    replicateClick(document.getElementById('thumbsUpPlayer'));
}

function thumbsDown(){
    replicateClick(document.getElementById('thumbsDownPlayer'));
}
Run Code Online (Sandbox Code Playgroud)

它应该很容易使用,thumbsUp()如果你想要竖起大拇指,就打电话,thumbsDown()如果你想要反对,就打电话。