var obj = $(".yt-simple-endpoint.inline-block.style-scope.ytd-thumbnail")
console.log("slicing obj " + obj[0].slice(32, 43));
obj是一个包含youtube链接的数组。如果您在youtube.com主页上,它包含大约32个youtube链接。所以我在这里尝试做的是,选择obj[0]
"首先在该数组中使用urtube url并仅切片观察后的部分?v =。
然而,当我尝试这个时,我收到此错误消息:" contentscript.js:137未捕获TypeError:obj [0] .slice不是函数 在contentscript.js:137"
答案 0 :(得分:1)
如果要从数组中的第一个条目中提取某些字符,您确实可以使用urls[0]
从数组中获取第一个条目。您可能想验证它的存在。
要提取一些字符,您可以使用substr。即(从YT链接观看id)
var url = "https://www.youtube.com/watch?v=Oh3zMzmwsCA";
var urls = [url];
first_url = urls[0];
var myRegexp = /watch\?v=(.{11})/g;
var match = myRegexp.exec(first_url);
console.log(match[1]); // abc
exec函数返回基于正则表达式找到的所有匹配项。对于每个所谓的“组”,由在{。}周围看到的'('&')'确定。匹配时将创建另一个数组条目。
除了这些匹配之外,第一个元素将始终是正则表达式的完全匹配。
\?
会阻止正则表达式看到“?”作为正则表达式运算符。这意味着它将匹配文字“?”字符。
答案 1 :(得分:1)
正如您在评论中提到的,您想从youtube链接中提取视频网址。
要从网址获取查询字符串参数,您可以使用this answer中提供的解决方案。
然后,要获取网址的v
部分,请执行以下操作:
var urls = [
'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
'https://www.youtube.com/watch?v=4fndeDfaWCg',
'https://www.youtube.com/watch?v=yPYZpwSpKmA'
];
var firstLink = getParameterByName('v', urls[0]);
document.write(firstLink);
function getParameterByName(name, url) {
if (!url) {
url = window.location.href
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) {
return null
}
if (!results[2]) {
return ''
}
return decodeURIComponent(results[2].replace(/\+/g, " "))
}