在 ajax 应用程序中重新加入 chrome.cast.session



我们的网站使用ajax来导航页面,这使得在页面更改时很难请求新会话。 理想情况下,当用户更改页面时,我想停止当前播放的会话,并使用新页面上的视频启动新会话。

在第一个页面加载中,我附加 https://www.gstatic.com/cv/js/sender/v1/cast_sender.js 脚本,调用 init 方法:

var sessionRequest = new chrome.cast.SessionRequest(applicationID);
var apiConfig = new chrome.cast.ApiConfig(sessionRequest,
this.sessionListener.bind(this),
this.receiverListener.bind(this));
chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.onError.bind(this));

一切正常,我的回调被调用,我可以启动Chromecast会话。

在辅助页面加载时,我不会重新添加cast_sender.js脚本。当我调用 initalize 方法并且会话侦听器回调不执行时。如果我尝试在页面之间保持会话,则可以访问会话并访问其媒体对象,但是如果我尝试在会话或媒体对象上调用任何方法,则只会返回错误:

TypeError: Cannot call method 'postMessage' of null

似乎在执行我缺少的cast_sender.js脚本时发生了一些魔术绑定?

我们刚刚发布了可能解决此问题的Google Cast扩展测试版。 看我的帖子: https://plus.google.com/+ShawnShen/posts/aVXSHyceNbR

您可以在应用中添加类似以下内容的内容,以执行同步/异步脚本加载。

window['_onGCastApiAvailable'] = (function(loaded, errorInfo) { 如果(已加载){ this.init(); } else { this.appendMessage_(错误信息); } }).bind(this);

最新更新