我正在使用我在论坛上找到的脚本与我的javascript滑块绑定到Vimeo API但我收到错误:
SyntaxError:JSON.parse:意外字符
它表示该行存在错误:
var data = JSON.parse(e.data);
这是整个剧本:
(function () {
var $=jQuery;
var f = $('iframe');
var url = f.attr('src').split('?')[0]; <?php //HACK! had to hard code the protocol in here or postMethod shows error: Uncaught SyntaxError: An invalid or illegal string was specified. ?>
//var status = $('.status');
// Listen for messages from the player
if (window.addEventListener){
window.addEventListener('message', onMessageReceived, false);
} else {
window.attachEvent('onmessage', onMessageReceived, false);
}
// Handle messages received from the player
function onMessageReceived(e) {
var data = JSON.parse(e.data);
switch (data.event) {
case 'ready':
onReady();
break;
case 'playProgress':
onPlayProgress(data.data);
break;
case 'pause':
onPause();
break;
case 'finish':
onFinish();
break;
}
}
// Call the API when a button is pressed
$('button').on('click', function() {
post($(this).text().toLowerCase());
});
// Helper function for sending a message to the player
function post(action, value) {
var data = { method: action };
if (value) {
data.value = value;
}
$('iframe')[0].contentWindow.postMessage(JSON.stringify(data), url);
}
function onReady() {
post('addEventListener', 'pause');
post('addEventListener', 'finish');
post('addEventListener', 'playProgress');
}
function onPause() {
console.log("vimeo paused");
}
function onFinish() {
playing = setInterval(function() {slide('left')}, 6000);
console.log("vimeo finish");
slide('left');
}
function onPlayProgress(data) {
clearInterval(playing);
console.log("vimeo play progress");
}
})();
有人有什么想法吗?谢谢!
答案 0 :(得分:1)
问题是这段代码: var f = $('iframe');
如果您的网页上有其他iframe,则代码将针对这些iframe。这可能是一个类似Facebook的/分享按钮,就像我的情况一样。你必须用这样的东西填充f变量:
var f = $('。vimeoplayer');
尽管如此,我仍然遇到了问题。我不认为使用普通的javascript / jquery与vimeo播放器交互是可行的,而不使用他们的迷你库:“froogaloop”。我开始使用froogaloop,它解决了我所有的问题。 Froogaloop只有几行代码......完全值得。