Twitter встраивается (с wordpress) и загружается?

Я хочу знать, когда твит загружается. У меня есть такой пост http://pego-design.com/remarky-brisi/media-twitter-embeds/ или здесь http://en.support.wordpress.com/twitter/twitter-embeds/ и хотел бы узнать высоту странного iframe, созданного с помощью этого кода:

<div class="entry-content">
<blockquote class="twitter-tweet" width="550"><p>Really cool to read through and find so much awesomeness added to WordPress 3.6 while I was gone. I should take three weeks off more often.</p>
<p>&mdash; Andrew Nacin (@nacin) <a href="https://twitter.com/nacin/status/319508408669708289">April 3, 2013</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>

уродливо с демонстрацией js: http://jsfiddle.net/qWHc5/2/

Если вы посмотрите эту демонстрацию, вы увидите первый и окончательный размер iframe (93 213 213 213… или 93,93,93 213 213…), мне нужно знать, как получить последнее значение без уродливого решения.

Я пробую это Как определить, загружен ли iframe?но не работает...

ОБНОВЛЕНИЕ: я нашел эту версию widgets.js https://gist.github.com/johan/4479186 с обратными вызовами, которые я не знаю, как использовать, вот так window.twttr.tfw.callbacks.cb0.


person benoît    schedule 17.06.2013    source источник


Ответы (2)


WordPress использует oEmbed для включения Twitter среди других.
Вы можете найти код, который делает это, на wp-includes/class-oembed.php

Для воздействия на него используйте:

function so_17151843_embed ( $provider, $url, $args ) {
  // check $provider if it is twitter
  // change url values to what you want
  $url = add_query_arg( 'maxheight', $url )

  return $url;
}
add_filter( 'oembed_fetch_url', 'so_17151843_embed' );

Вы можете поместить это в себя funtions.php.
Это должно помочь вам в вашем пути.

person janw    schedule 28.06.2013
comment
короткий ответ, нет. Почему пытаются сделать это в js? php безопаснее для этого. Есть ли конкретная причина, по которой вы хотите использовать js? - person janw; 28.06.2013
comment
как php может получить окончательную высоту? Я делаю обновление: jsfiddle.net/qWHc5/1 - person benoît; 28.06.2013
comment
Я вас не понимаю, зачем вы показываете этот html. Если вы вставите твит в редакторе WordPress, он автоматически встроится. В этом помогает мой пример. - person janw; 29.06.2013
comment
Когда я говорю о загрузке, нужно знать окончательную высоту сгенерированного iframe. Я пометил WordPress, потому что код генерируется WordPress, но это вопрос js. - person benoît; 29.06.2013
comment
Вы хотите знать высоту сгенерированного iframe? Вы можете просто получить это с помощью jQuery. Так что, думаю, тут что-то большее... - person janw; 29.06.2013
comment
Могу я спросить, зачем вам нужен этот рыцарь? - person janw; 30.06.2013
comment
Я работаю над расширенной сеткой, и мне нужно понять это для своих знаний, мне любопытно. - person benoît; 30.06.2013
comment
Я нашел кое-что, используя обратный вызов в twitter widget.js jsfiddle.net/qWHc5/5, это лучшее, что я сможет сделать… - person benoît; 01.07.2013

Вот правильный способ проверить готовность Twitter:

if (window.twttr !== undefined) {
    window.twttr.ready(function(){
        console.log("Twitter ready!");
    });
};

Поздний ответ, но надеюсь, что это поможет будущим пользователям!

person punkbit    schedule 06.10.2013
comment
Спасибо ! Я попробую. - person benoît; 07.10.2013
comment
Не очень хорошо, посмотрите мой jsfiddle… jsfiddle.net/qWHc5/1 и ваш код jsfiddle.net/qWHc5/10< /а> - person benoît; 07.10.2013
comment
Да, как это будет работать в случае twttr == undefined — до загрузки widgets.js? Этого не будет, и в этом суть Q. - person Julian; 13.11.2014
comment
@Julian код выше работает, чтобы проверить, когда твит загружен. Теперь, основываясь на вашей реализации, ваши виджеты при загрузке должны иметь функцию обратного вызова. Полностью зависит от вашей реализации. - person punkbit; 13.11.2014
comment
@punkbit, спасибо. Моя реализация представляет собой расширение Chrome, которое хочет просыпаться, когда твит находится на странице с ним. Он не создает твит и не загружает widgets.js, поэтому не имеет хорошего способа прикрепить onload к тегу script. Ищите что-то вроде window.addEventListener('twitter', ..). Сейчас я опрашиваю, чтобы узнать, когда twttr определен, но это некрасиво. - person Julian; 13.11.2014