Wywołanie osi czasu na Twitterze

Prowadzę wiele badań nad wbudowanymi osiami czasu na Twitterze. Próbowałem dowiedzieć się, czy można wiedzieć, kiedy kończy się ładowanie osi czasu iwyświetla na stronie. Tozażądano wydania, ale nie został jeszcze wdrożony. Doszedłem do ślepej uliczki i mam nadzieję, że ktoś jest w stanie pomóc mi znaleźć rozwiązanie. Oto, co do tej pory znalazłem:

Kod do dodania Osadzonej osi czasu:

<a class="twitter-timeline" href="https://twitter.com/twitterapi" data-widget-id="YOUR-    WIDGET-ID-HERE">Tweets by @twitterapi</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

Co się stanie, gdy skrypt zostanie uruchomiony:

Skrypt zastępuje<a> tag z<iframe> element.

Zawartośćiframe są gotowe, ale obraz awatara i przycisk „follow @username” nie są pobierane. Theiframejestheight atrybut jest ustawiony na 0, dzięki czemu nie widzisz zawartości bez obrazów.

Obraz awatara jest pobierany, ale przycisk „follow @username” nadal się pobiera. Treść nadal nie jest widoczna.

Zakończono pobieranie przycisku „follow @username”. Theiframejestheight atrybut jest ustawiony tak, aby odpowiadał wysokości zawartościiframe. Oś czasu jest teraz widoczna.

Teraz wypróbowałem wszystko, co myślę, aby dowiedzieć się, kiedy oś czasu jest widoczna (bez przy użyciu setimeout / interval). Celem jest uzyskanie zdarzenia / funkcji / wywołania zwrotnego bez odpytywania. Oto, co próbowałem dotychczas bez powodzenia:

Ustawianie detektorów zdarzeń naiframe (Jak na przykładonload, DOMContentLoaded, DOMFrameContentLoaded, itp.), aby wiedzieć, kiedy treść się zakończyła. To nie działa, ponieważiframe nie masrc atrybut. Po przejściu przez utrudniony kod (nie udało mi się znaleźć nieskompresowanej wersji) domyślam się, że używa zapisów, aby dodać treść do treściiframe.Ustawianie odbiorników zdarzeń, aby wiedzieć, kiedyheight zmiany atrybutów naiframe. Teoretycznie to zdarzenie powinno wystrzelić trzy razy: najpierw, gdy zawartość ładuje się, druga, gdyheight jest ustawiony na 0, a trzeci naheight jest ustawiony, aby pokazać w pełni załadowaną oś czasu. Zdołałem jednak wystrzelić wydarzenie tylko w pierwszych dwóch przypadkach i nigdy w trzecim (tym, którego faktycznie chciałem). użyłemDOMSubtreeModified, onreadystatechange, ionpropertychange, lecz tylkoDOMSubtreeModified pracował na wypalanie imprezy.Ustawianie detektorów zdarzeń na elementachiframe. Ponieważ JavaScript może dotrzeć do wnętrzaiframe z Twittera można pobrać dowolny element wewnątrziframe (Jak na przykładdocument lubwindow). Jednak dodanieonload, DOMContentLoadedlubDOMFrameContentLoaded słuchacze zdarzeń nawindow lubdocument ziframe nadal nie odpala tych wydarzeń.Ustawianie detektorów zdarzeń na przycisku „follow @username”. Przycisk jest w rzeczywistościiframe to masrc atrybut. Ustawiająconload zdarzenie zostanie zwolnione po załadowaniu. Jednakżeonload wydarzenie zawsze wystrzeli dwa razy. Pierwszy raz, gdy zakończy się pobieranie, a drugi, gdy zakończy przetwarzanie. Natychmiast po drugim spuście zostanie wyświetlona oś czasu. Wdrożenie tego jest jednak dość hack (chyba wszystko jest), ponieważ musisz poczekać na zawartośćiframe ładować, sięgać do środka i uzyskać „follow @ username”iframe, ustawonload wydarzenie na nim, a następnie poczekaj na wystrzelenie drugiego zdarzenia.Używająctwttr.widgets.createTimeline() funkcja, która ma opcjonalny parametr dla wywołania zwrotnego. Jednak wywołanie zwrotne jest wywoływane, gdy treść jest gotowa (krok 2), ale nie wtedy, gdy ramka iframe jest widoczna (krok 4).

Prawdopodobnie jest jeszcze kilka kombinacji, o których zapomniałem w tym momencie. Wiem, że istniejegithub gist który korzysta z Twitterawidget.js, ale dodaje do niego wywołania zwrotne. Nie udało mi się tego uruchomić.

Przepraszam za pytanie dziennika, ale mam nadzieję, że ktoś może pomóc. Dzięki.

questionAnswers(3)

yourAnswerToTheQuestion