我会将我的编码技能标记为中级,因此,我所要求的可能是简单的,也可能不是简单的(显而易见)。我也衷心感谢任何对此给予了极大关注的人。
我的目标是通过jsonp和ajax方法从另一台服务器(我是其客户端)中获取原始歌曲元数据。成功获取元数据(艺术家,标题和专辑)后,然后我想在我网站的页面标题中显示它(请参见下面的图片)。我之所以要这样做,是因为从广泛的研究中可以发现,大多数蓝牙音频设备正在读取页面标题(浏览器选项卡)中的元数据:Google Music playing in browserBT Audio player
[我想做的事看起来应该很简单,但我无法想像Spotify,Youtube或Google Music那样在浏览器中显示“艺术家,标题和专辑”。
我下面的代码能够提取原始数据,使用jsonp进行转换,我可以通过将其作为ID元素成功地从原始数据(IE'title')中仅推送一个元素。但是,如何将所有三个(艺术家,标题和专辑)推送到页面标题?
<!DOCTYPE html>
<html
lang=en
dir="ltr"
class="mobile-web-player"
>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
function update(metadataObj) {
if (metadataObj && metadataObj.m_Item2) {
var title = document.getElementById('title');
title.innerHTML = metadataObj.m_Item2.Title;
var artist = document.getElementById('artist');
artist.innerHTML = 'by ' + metadataObj.m_Item2.Artist;
var album = document.getElementById('album');
album.innerHTML = metadataObj.m_Item2.Album + ' ';
}
}
</script>
<script type="text/javascript">
var stationID = 'X123';
var apiToken = 'X12345';
// refresh MetaData every 5 seconds
function fetchMetadata(stationID, apiToken) {
$.ajax({
type: 'get',
cache: false,
url: "https://listen.samcloud.com/webapi/station/X123/history/npe?token=X12345&callback=update&format=json",
//async: true,
datatype: 'jsonp',
});
}
fetchMetadata(stationID, apiToken);
window.setInterval(function() {
fetchMetadata(stationID, apiToken);
}, 5000);
</script>
<!-- I can successfully send the song's title to my page title via <title id> method -->
<title id="title">My Radio Station</title>
</head>
<body>
</body>
</html>
在update()
功能中,您可以调用document.title
来设置新的标签标题,而不是设置<title>
标签。例如:
function update(metadataObj) {
if (metadataObj && metadataObj.m_Item2) {
var title = document.getElementById('title');
var artist = document.getElementById('artist');
var album = document.getElementById('album');
// If you are using es6
document.title = `Playing ${title} from ${artist} - ${album}`;
// If not using es6
// document.title = 'Playing '+ title + ' from '+ artist +' - album';
}
}