На самом деле, оказывается, это невероятно глупо.Выполнение кода в Firefox привело к реальному сообщению об ошибке:
syntax error
try { __flash__toXML(%28function%28%29%7B%7D%29(5)) ; } catch (e) { "<undefined/...
---------------------^
Так что, очевидно, его нужно сериализовать в XML, чтобы использовать в качестве обратного вызова.Что действительно немного раздражает.
Мое решение было примерно таким:
var ytCallbackID = 1;
var makeYTCallback = function (func) {
var ret = "ytCallback" + (ytCallbackID++);
window[ret] = func;
return ret;
}
var onYouTubePlayerReady = function (id) {
var evt = makeYTCallback(function(state) {
onYouTubePlayerStateChange(id, state);
});
var ytplayer = document.getElementById(id);
ytplayer.addEventListener("onStateChange", evt);
};
Я не полностью протестировал его (так как я сделал это прямо в концевчерашний день), но я думаю, что это сработает.
Добрался до его тестирования, и он работает как шарм!Это немного непонятно, как по идее, так и по реализации, но это работает, и вот что важно:)