Тест iBooks для интернет-соединения с HTML-виджетом - PullRequest
3 голосов
/ 28 января 2012

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


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

 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!");
}

И добавлю этот код в iBooks Author как виджет, всплывающее окно работает нормально, но нет способа подтвердить предупреждение.По сути, он блокирует iBook.Есть идеи?

1 Ответ

1 голос
/ 09 апреля 2012

Я не уверен насчет ibook dashboard, но я написал проверку сердцебиения для моего веб-приложения, которое можно использовать для подтверждения http-соединения, возможно, оно может делать то, что вам нужно ... оригинальный пост здесь

Вы вызываете код с URL для проверки, max 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);} )
...