2014-02-10 4 views
0

Наш сайт использует ajax для навигации по страницам, и это затрудняет запрос нового сеанса при изменении страницы. В идеале, когда пользователь меняет страницы, я хотел бы остановить текущий сеанс и начать новый сеанс с видео, которое находится на новой странице.Вступление в chrome.cast.Session в приложении ajax?

На первом PageLoad, я добавляю в https://www.gstatic.com/cv/js/sender/v1/cast_sender.js сценарий, вызовите метод инициализации:

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, и обратный вызов sessionListener не выполняется. Если я стараюсь держаться на сессии между страницами, я могу получить доступ к сессии и получить это медиа-объект, но если я пытаюсь вызова любых методов на сессии или медиа-объект, я просто получить обратно ошибку:

TypeError: Cannot call method 'postMessage' of null 

Похоже, есть какое-то волшебное связывание, которое происходит при выполнении сценария cast_sender.js, который мне не хватает?

+0

Вы играли с AutoJoinPolicy? https://developers.google.com/cast/docs/reference/chrome/chrome.cast.AutoJoinPolicy –

+0

Да, попробовал играть как с AutoJoinPolicy, так и с DefaultActionPolicy, и ни один из них не имеет никакого эффекта. – Jgubman

+0

Ваша вторичная страница загружается через вызов ajax? Если да, попробуйте загрузить cast_sender.js асинхронно. Посмотрите, как это сделать http://stackoverflow.com/questions/8097026/how-to-run-javascript-in-html-loaded-via-ajax –

ответ

0

Мы только что выпустили бета-версию расширения Google Cast, которая потенциально может решить эту проблему. См. Мой пост: https://plus.google.com/+ShawnShen/posts/aVXSHyceNbR

Вы можете добавить в приложение что-то вроде следующего в вашем приложении, чтобы выполнить как загрузку сценария sync/async.

окно [ '_ onGCastApiAvailable'] = (функция (загружена, errorInfo) { , если (загружен) { this.init();} еще { this.appendMessage_ (errorInfo); } .}) связывают (это);