【问题标题】:Unable to post message to https://player.vimeo.com. Recipient has origin https://tpc.googlesyndication.com无法将消息发布到 https://player.vimeo.com。收件人来源 https://tpc.googlesyndication.com
【发布时间】:2018-03-20 09:13:10
【问题描述】:

我正在尝试在 mac OS 上的 Safari 浏览器上使用 vimeo 播放器在线播放视频。但是当我发布“就绪”请求时,我收到一个错误错误,上面写着

无法向https://player.vimeo.com 发布消息。收件人有 来源https://tpc.googlesyndication.com.

这就是我调用 vimeo 函数的方式

 var player = $('iframe');
        var playerOrigin = '*';
        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(event) {
            // Handle messages from the vimeo player only
            if (!(/^https?:\/\/player.vimeo.com/).test(event.origin)) {
                return false;
            }
            if (playerOrigin === '*') {
                playerOrigin = event.origin;
            }
            var data = JSON.parse(event.data);
            switch (data.event) {
                case 'ready':
                    onReady();
                    break;

                case 'playProgress':
                    onPlayProgress(data.data);
                    break;

                case 'pause':
                    onPause(data.data);
                    break;

                case 'seek':
                    onseekTo(data.data);
                    break;

                case 'finish':
                    onFinish();
                    break;
            }
        }
        // Helper function for sending a message to the player
        function post(action, value) {
            var data = {
                method: action
            };
            if (value) {
                data.value = value;
            }
            var message = JSON.stringify(data);
            player[0].contentWindow.postMessage(message, playerOrigin);
        }

        function onReady() {
            $(".loading").show();
            post('addEventListener', 'finish');
            post('addEventListener', 'playProgress');
            post('addEventListener', 'pause');
            post('addEventListener', 'seek');

        }

【问题讨论】:

    标签: javascript jquery vimeo vimeo-api vimeo-player


    【解决方案1】:

    似乎播放器是通过谷歌广告呈现的。 tpc.googlesyndication 是谷歌广告平台。 广告正在包裹播放器。所以任何postMessages 都会通过它,从而清除实际的事件来源。

    我面临着类似的问题。我的权宜之计是使用'*'(我对拥有通配符目标的想法感到畏缩;但我还没有更清洁的解决方案)

    【讨论】:

      猜你喜欢
      • 2013-12-02
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2016-02-25
      • 1970-01-01
      • 2017-09-02
      • 2016-10-22
      相关资源
      最近更新 更多