Youtube iframe:onYouTubePlayerAPIReady()未调用

jen*_*jis 10 javascript youtube iframe youtube-api

我有一个带有iframe的页面加载youtube视频(iframe的src在运行时被修改).我基于Rob W的代码提供了关于此主题的不同答案

<iframe id="browser" class="browser" scrolling="no" name="navigation"  
src="http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1" application="youtube" style="display:  
inline;"></iframe>
Run Code Online (Sandbox Code Playgroud)

然后,当加载iframe时,执行以下代码:

$('.browser').load(function() {
dispose_ytplayer();
});
Run Code Online (Sandbox Code Playgroud)

被调用函数dispose_ytplayer()是:

function dispose_ytplayer() {
    (function(){
    var s = document.createElement("script");
    s.src = "http://www.youtube.com/player_api";
    var before = document.getElementsByTagName("script")[0];
    before.parentNode.insertBefore(s, before);
     })();

    alert('called yt_dispose');

    var ytIframeplayer;

    function onYouTubePlayerAPIReady() {
        alert('called onYouTubePlayerAPIReady');
        ytIframeplayer = new YT.Player('browser', {
             events: {
                "onStateChange": stopCycle
             }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

但是从不调用第二个警报("调用onYouTubePlayerAPIReady"),我的chrome console.log显示来自www-embed_core_module-vflNmuGQq.js的错误消息:26:

不安全的JavaScript尝试使用URL http://www.youtube.com/embed/nOEw9iiopwI?enablejsapi=1从URL访问URL为http://mysite.com的框架.域,协议和端口必须匹配.

有任何想法吗?

CD.*_*D.. 24

onYouTubePlayerAPIReady应该在window对象上.

尝试:

window.onYouTubePlayerAPIReady = function() {
        alert('called onYouTubePlayerAPIReady');
        ytIframeplayer = new YT.Player('browser', {
             events: {
                "onStateChange": stopCycle
             }
    });
}
Run Code Online (Sandbox Code Playgroud)