Vimeo Slider脚本-SyntaxError:JSON.parse:意外字符

Vimeo Slider Script - SyntaxError: JSON.parse: unexpected character

本文关键字:parse 意外 字符 JSON Vimeo 脚本 -SyntaxError Slider      更新时间:2023-09-26

我正在使用我在论坛上找到的一个脚本,用我的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");
    }
})();

有人有什么想法吗?谢谢

问题在于以下代码:var f=$('iframe');

如果您的页面上有其他iframe,那么代码将针对这些iframe。它可能是一个类似于脸书的/共享按钮,这就是我的情况。你必须用这样的东西填充f变量:

var f=$('.viopeoplayer');

尽管如此,我还是遇到了问题。如果不使用他们的迷你库"froogarop",我认为使用普通的javascript/jquery与vimeo播放器交互是不可行的。我开始使用froogaroop,它解决了我所有的问题。Froogaloop只是几行代码。。。完全值得。

http://developer.vimeo.com/player/js-api