我正在尝试返回SoundCloud上标有“电子”的歌曲的href链接。
我的剧本应该做的是,它搜索SoundCloud为我的流中的歌曲生成的列表项,如果歌曲有“电子”标签,则它会抓取href链接,链接到该特定歌曲。然后它遍历列表项;为我生成一系列链接。
我相信我的代码是正确的,但是使用Chrome的Javascript控制台,我将返回一个空数组。
这是我的剧本:
// ==UserScript==
// @name jQuery for SoundCloud
// @namespace jQueryForSoundCloud
// @description This userscript returns the href link of all songs tagged 'Electronic'
// ==/UserScript==
// a function that loads jQuery and calls a callback function when jQuery has finished loading
function addJQuery(callback) {
var script = document.createElement("script");
script.setAttribute("src", "http://web.archive.org/web/20161221181738/http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
script.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "(" + callback.toString() + ")();";
document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}
// the guts of this userscript
function main() {
var href = $('li.listItems .spanClass:contains(Electronic)').map(function() {
return $(this).parent('a').attr('href')
}).get();
console.log(href)
}
// load jQuery and execute the main function
addJQuery(main);
将此代码与JSFiddle一起使用,并生成具有完全相同布局的测试HTML文档,我能够返回一个数组;但是,使用带有SoundCloud的JS控制台,我将返回'[]'并且未定义。
您认为我做错了什么,我该怎么做才能解决我遇到的这个问题?
提前致谢。
编辑:当我在JSFiddle提供的Javascript窗口上按CTRL + ENTER时,我的代码仅适用于JSFiddle;返回一个数组,其中包含值。如果我在加载脚本的情况下在Chrome的JS控制台中按CTRL + ENTER,则返回一个空数组。怎么了?