2012-01-28 1 views
3

Я создал виджет в dashcode, который включает видео на YouTube. Сначала я хотел бы проверить наличие промежуточного соединения и предупредить пользователя. Я встроил виджет YouTube в iBooks. Иногда я предполагаю, что у некоторых не будет промежуточной связи.Тест iBooks для подключения к Интернету с HTML-виджетами


, если я добавлю:

var online = window.navigator.onLine; 
if (!online) { 
alert("we are offline"); 
//console.log("We are offline!"); 
} else { 
alert("we are online"); 
//console.log("We are online!"); 
} 

И добавить этот код в интерактивные книги Автор как виджет, всплывающий работает отлично, но нет никакого способа, чтобы подтвердить предупреждение. В принципе, он блокирует iBook. Есть идеи?

ответ

1

Я не уверен, IBook приборной панели, но я написал сердцебиения проверки для моего веб-приложение, которое можно было бы использовать для подтверждения соединения HTTP, возможно, он может делать то, что вам нужно ... original post here

Вы называете код с URL-адресом для проверки, максимальный ttl и обратный вызов. Если страница не ответила на конец ttl (в миллисекундах), вызывающий вызов вызывается с нулевым значением, вы получаете статус и объект запроса.

function heartbeat(url, ttl, callback) { 
    // Confirms active connection to server by custom URL response 
    // 
    if (!url) { 
     url = "http://www.yourwebsitehere.com/yourpage?someheartbeatcall"; 
     // Replace with specific server heartbeat location and query string for cache busting 
    } 
    if (!ttl) { 
     ttl = 1000; // Custom timeout in milliseconds 
     // Replace with specific server heartbeat location and query string for cache busting 
    } 
    // Create the Ajax object 
    var ajaxRequest; 
    try{ 
      ajaxRequest = new XMLHttpRequest(); 
    } 
    catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e){ 
       // Unable to create 
       callback(null); 
       return; 
      } 
     } 
    } 
    // Set flag so only one pulse is recorded 
    var called = false; 
    // Make ajax call 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      if (!called) { 
       called = true; 
       callback(ajaxRequest.status, ajaxRequest); 
      } 
     } 
    } 
    ajaxRequest.open("GET", url, true); 
    ajaxRequest.send(null); 
    // Make ttl timeout call 
    var ttlcatch = setTimeout(function(){ 
     if (!called) { 
      called = true; 
      callback(null); 
     } 
    }, ttl); 
    return; 
} 

var foo = false; 
heartbeat("http://www.google.com", 1000, function(pulse){alert(pulse);}) 
Смежные вопросы