Обнаружение, если YouTube заблокирован компанией / провайдером - PullRequest
13 голосов
/ 13 ноября 2008

У нас есть видео с YouTube на сайте, и мы хотим определить, вероятно ли, что они не смогут их просматривать из-за (в основном, из-за) политики компании или иным образом.

У нас есть два сайта:

1) Flex / Flash 2) HTML

Я думаю, что с помощью Flex я могу попытаться загрузить http://youtube.com/crossdomain.xml, и если это действительный XML, предположим, что сайт доступен

Но с HTML я не знаю, как это сделать. Я даже не могу думать о "хорошем взломе".

Ответы [ 5 ]

17 голосов
/ 26 ноября 2009

Мне нравится решение неудачника, но да, оно создает условие гонки . Это сработает и не создаст условия гонки:

var image = new Image();
image.onload = function(){
// The user can access youtube
};
image.onerror = function(){
// The user can't access youtube
};
image.src = "http://youtube.com/favicon.ico";
14 голосов
/ 13 ноября 2008

Вы можете загрузить изображение с YouTube, используя JavaScript и проверить его свойства. Фавикон крошечный и имеет постоянный URL -

var image = new Image();
image.src = "http://youtube.com/favicon.ico";
if (image.height > 0) {
    // The user can access youtube
} else {
    // The user can't access youtube
}

Я думаю, что это немного лучше, чем загрузка javascript, потому что он не будет пытаться запустить какой-либо код, и хотя youtube может переименовать свои файлы javascript или функции из этих файлов, они вряд ли когда-либо переименуют свой favicon.

8 голосов
/ 13 ноября 2008

Это должно работать. По сути, он загружает файл JavaScript youtube.com, а затем проверяет, существует ли функция в этом файле.

<html>

<head>
    <script src="http://www.youtube.com/js/account.js"></script>
    <script>
        function has_you_tube()
        {
            if(typeof addVideosToQuicklist == 'function')
            {
                return true;
            }
            else
            {
                return false;
            }

        }
    </script>

</head>
<body>
    <script>alert( "has_youtube: " + has_you_tube() ); </script>
</body>


</html>
1 голос
/ 11 ноября 2013

Я застрял на этом сегодня и попробовал тест favicon, но он не работал в IE. Я использовал Справочник по API проигрывателя YouTube для iframe Embeds , чтобы встроить видео YouTube на свой сайт, поэтому я выполнил проверку на var игрока, определенного непосредственно перед onYouTubeIFrameReady, с задержкой вызова javascript. 1003 *

<script> function YouTubeTester() {            
            if (player == undefined) {
                alert("youtube blocked");
            }
        }
</script>
<script>window.setTimeout("YouTubeTester()", 500);</script>

Кажется, работает на меня. Мне нужна была задержка, чтобы заставить его работать в IE.

0 голосов
/ 19 августа 2015

Это сработало для меня ... Это также мой первый пост, надеюсь, он тоже кому-нибудь поможет.

<?php

$v = file_get_contents("https://www.youtube.com/iframe_api");

//Tie counts to a variable
$test = substr_count($v, 'loading');

if ($test > 0)

{ ?>
    <iframe>YOUTUBE VIDEO GOES HERE</iframe>

    <?php
}

else

{

echo "<br/> no connection";

}

?>
...