javascript - Pandora ajax 无法与 waitForKeyElements 一起使用

标签 javascript ajax greasemonkey pandora

Pandora AJAX 无法与 waitForKeyElements 配合使用。我花了几个小时试图找出哪里出了问题,但无法解决。

它可以工作一次,但在播放下一首轨道时不起作用。

// ==UserScript==
// @name         Pandora I am listening to
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Pandora I am listening to
// @author       You
// @match        http*://www.pandora.com/*
// @include      https://www.pandora.com/station/play/*
// @require      https://gist.githubusercontent.com/BrockA/2625891/raw/9c97aa67ff9c5d56be34a55ad6c18a314e5eb548/waitForKeyElements.js
// @require     http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==

function liveNow() {
    setTimeout(function() {
        console.log(`Now Playing ${$(".songTitle")[0].innerHTML}`);
    }, 6000);  // delay for loading of music

}

waitForKeyElements ("#trackInfoContainer .songTitle", liveNow);

最佳答案

#trackInfoContainer 正在为每个附加轨道重用(而不是重新创建)。

因此,仅仅等待节点创建是不够的,您还必须检查内容是否已更改。
以下是如何使用 waitForKeyElements 执行此操作:

waitForKeyElements ("#trackInfoContainer .songTitle", liveNow);

function liveNow (jNode) {
    var titleText  = jNode.text ().trim ();
    var lastText   = jNode.data ("lastText")  ||  "";

    if (titleText != lastText) {
        jNode.data ("lastText", titleText);
        console.log (`Now Playing ${titleText}`);
    }
    return true;  //-- Tell waitForKeyElements to keep checking this node.
}

关于javascript - Pandora ajax 无法与 waitForKeyElements 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41541110/

相关文章:

javascript - 无法从数据库中检索 ID

.net - 你如何在 .NET 中提供 JSON 响应数据?

javascript - 骨架.js集合-如何为获取定义成功回调(尽管是递归的)

javascript - 网站加载前显示空白网页

javascript - 通过 Knex.js 执行 POSTGRES LIKE 时出现语法错误

javascript - 使用分位数的 d3 键汇总

java - JSON 格式化(通过 jQuery AJAX 发送 JSON 到 Java/Wicket 服务器)

javascript - 如何查看当前显示的html页面的来源(动态)而不是原始页面?

javascript - 如何使用 Greasemonkey(或 Tampermonkey)覆盖图形?

javascript - ngStorage 在 Chrome iframe 中崩溃