我正在开发第一个Google Chrome扩展程序。我希望能够使用我的扩展程序点击Google音乐测试版页面上的“竖起大拇指”按钮。出于某种原因,竖起大拇指按钮似乎比随机播放,重复播放,播放,下一个和之前更复杂。对于所有这些,以下代码有效:
chrome.tabs.executeScript(tab_id,
{
code: "location.assign('javascript:SJBpost(\"" + command +
"\");void 0');",
allFrames: true
});
其中command =“playPause”,“nextSong”,“prevSong”,“toggleShuffle”,“togglePlay”等。
我认为很多人使用开发人员工具来跟踪堆栈跟踪并查看给予SJBpost的参数。使用“thumbsUp”尝试SJBpost会返回错误。
显然这个问题仅限于较小的人群,因为不是每个人都能查看Google音乐的来源,但如果你能帮助我,我会非常感激。
Google音乐页面上竖起大拇指的div如下所示:
<div id="thumbsUpPlayer" class="thumbsUp" title="Thumbs up"></div>
现在,我尝试使用jQuery执行此操作:
$("#thumbsUpPlayer").click()
但我在javascript控制台中收到TypeError,undefined_method消息。
非常感谢任何帮助。我是javascript和插件的初学者,以及所有这些东西,我很高兴能够将这些扩展的最后部分放在一起。
谢谢!
答案 0 :(得分:3)
似乎Google音乐测试版实际上并没有真正监听click()
事件本身,而是基于通常在实际点击事件之前发生的事件:鼠标悬停,鼠标悬停和鼠标悬停。
我不是jQuery专家,所以我无法弄清楚为什么$("#thumbsUpPlayer").mouseover().mousedown().mouseup()
不起作用(.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'));
}
它可能相当容易使用,如果你想要竖起大拇指,只需拨打thumbsUp()
,或者如果你想竖起大拇指,请致电thumbsDown()
。
答案 1 :(得分:2)
我今天一直在研究这个问题,发现你可以从控制台使用SJBpost触发很多命令。
http://hints.macworld.com/article.php?story=20110622061755509
SJBpost('thumbsUpPlayer');
我尝试过的命令可以确认工作:
我仍在查看可让您检索当前艺术家/曲目信息的命令。如果你发现它们是什么,请告诉我。
答案 2 :(得分:0)
'music plus for google' chrome扩展程序中的以下代码段可能很有用:
function playback_action(type, callback) {
var $button;
if (type == 'playPause') {
$button = $('button[data-id="play-pause"]');
}
else if (type == 'nextSong') {
$button = $('button[data-id="forward"]');
}
else if (type == 'prevSong') {
$button = $('button[data-id="rewind"]');
}
else if (type == 'currently_playing') {
$button = $('button[data-id="play-pause"]');
}
if ($('button[data-id="play-pause"]').attr('disabled')) {
$instant_mix = $('li[data-type="rd"]').click();
setTimeout(function() {
$('div[data-type="im"] .radio-icon').first().click();
}, 1000);
}
else {
$button.click();
}
callback();
}
当上述代码段停止工作时,请再次检查该链接,看看作者是否可以将扩展程序更新为有效的内容。