Od miesięcy korzystam z interfejsu YouTube IFrame Player API bez problemu i ostatnio zacząłem widzieć ten wyjątek, gdy odtwarzacz się ładuje:
Uncaught ReferenceError: ytcfg is not defined
Sprawdzając element iframe, widzę pomyślne wywołanie yt.setConfig
, ale ytcfg.set
później się nie udaje. Czy ostatnio zmieniono interfejs API? Każdy parametr odtwarzacza może powodować ten problem?
<script src="//s.ytimg.com/yts/jsbin/www-embed-player-vflnzmqns/www-embed-player.js" type="text/javascript" name="www-embed-player/www-embed-player"></script>
<script src="//s.ytimg.com/yts/jsbin/player-en_US-vflr--npw/base.js" name="player/base"></script>
<script>
yt.setConfig({
...
});
writeEmbed();
</script>
<script>
ytcsi.info('st', 35);
ytcfg.set({
"TIMING_ACTION": "",
"CSI_VIEWPORT": true,
"TIMING_INFO": {
"c": "WEB",
"yt_li": 1,
"cver": "1.20161112",
"yt_lt": "cold"
},
"CSI_SERVICE_NAME": "youtube"
});
;</script>
Istnieje kilka odmian tego problemu:
https://issuetracker.google.com/issues/35178202 „ytcfg nie jest zdefiniowane” https://issuetracker.google.com/issues/35177930 „__ytRIL nie jest zdefiniowane”
javascript
youtube-iframe-api
referenceerror
Thomas Vanier
źródło
źródło
Odpowiedzi:
To jest błąd Google. Dzieje się tak również na stronie programisty YouTube. https://developers.google.com/youtube/youtube_subscribe_button
Następujące błędy śledzą ten problem.
https://code.google.com/p/gdata-issues/issues/detail?id=8569 (nadal aktywny - od 5 stycznia 2017 r.)
Zagłosuj na ten błąd, korzystając z poniższych linków, aby przyciągnął ich uwagę. Siedzą na nim od 9 września 2016 r. !!.
źródło
Wygląda na to, że błąd jest po stronie youtube. Możesz zobaczyć ten sam błąd JS tutaj: https://www.youtube.com/embed/U-xetxYwyak
źródło
__ytRIL is not defined
błąd nadal nie został naprawionyZaczęło się to dziać nawet na youtube.com, kiedy klikniesz przycisk „Udostępnij” pod dowolnym filmem, a następnie kartę „Umieść”, aby skopiować i wkleić osadzony kod HTML. Zdecydowanie ich wina.
źródło
Miałem ten sam problem. Tymczasowa poprawka polegała na używaniu obiektów zamiast ramek iframe. U mnie to zadziałało.
źródło