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

时间:2011-06-07 01:22:01

标签: 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
            });

其中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和插件的初学者,以及所有这些东西,我很高兴能够将这些扩展的最后部分放在一起。

谢谢!

3 个答案:

答案 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');

我尝试过的命令可以确认工作:

  1. playPause
  2. thumbsUpPlayer
  3. thumbsDownPlayer
  4. prevSong
  5. nextSong
  6. 我仍在查看可让您检索当前艺术家/曲目信息的命令。如果你发现它们是什么,请告诉我。

答案 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();
}

当上述代码段停止工作时,请再次检查该链接,看看作者是否可以将扩展程序更新为有效的内容。