Отключить автообновление HTML? - PullRequest
2 голосов
/ 20 октября 2011

На веб-сайте клиента есть функция автообновления, которая отлично работает для настольных сайтов, но я создаю приложение для iPhone и мне нужно отключить его в мобильной версии.

Используемый код:

<META HTTP-EQUIV="REFRESH" CONTENT="30">

Я хотел бы использовать JavaScript, чтобы отключить его, если это возможно.

Спасибо.

EDIT: У меня нет доступа к файлу HTML, и поэтому я не могу его изменить. Мне нужно сделать это с помощью кода на стороне Objective-C в Xcode.

Ответы [ 2 ]

1 голос
/ 21 июля 2014

Я представлю что-то простое

Добавить meta тег с идентификатором id="meta-refresh", например:

 <meta http-equiv="refresh" content="2;http://new-url/" id="meta-refresh">

Просто используйте эти сценарии ..

 var iOS = false,
     p = navigator.platform;
 if( p === 'iPad' || p === 'iPhone' || p === 'iPod' ){//remove which is not your target
     iOS = true;
 }
 if(iOS){ // check if iOS then do the following
      var mr = document.getElementById("meta-refresh");
      mr.parentNode.removeChild(mr);
 }

Я верю, что это сработает ..

Также инициированный запрос, который JavaScript не может отключить после загрузки !! Точно так же точную работу можно найти в ответе Old Post, данном пользователем XP1

Выше используется xmlhttp requrest (AJAX) для проверки перед загрузкой документа и удаления метатега, если устройство является целевым устройством (iphone)

ИЛИ

можно использовать обновление динамически, если устройство не iPhone / iOS. это устранит необходимость выполнения динамической проверки и требование, чтобы избежать первого вызова обновления. без использования метатега

 var iOS = false,
     p = navigator.platform;
 if( p === 'iPad' || p === 'iPhone' || p === 'iPod' ){//remove which is not your target
     iOS = true;
 }
 if(!iOS){
      window.setTimeout(function(){window.location.href=window.location.href},30000); //30 Seconds
 }
0 голосов
/ 20 октября 2011

Если вы используете UIWebView для отображения сайта, вы можете использовать [webView stringByEvaluatingJavaScriptFromString:@"..."];, где "..." - это javascript:

    var metaTags = document.getElementsByTagName("META");
    for(var i = 0; i < metaTags.length; i++) {
        if (metaTags[i].getAttribute("HTTP-EQUIV").match(/^REFRESH$/i))
            metaTags[i].parentNode.removeChild(metaTags[i]);
    }

Для удобства сокращен до одной строки:

var metaTags = document.getElementsByTagName("META"); for(var i = 0; i < metaTags.length; i++) { if (metaTags[i].getAttribute("HTTP-EQUIV").match(/^REFRESH$/i)) { metaTags[i].parentNode.removeChild(metaTags[i]);}}

Редактировать: Ну ... после всего этого оказывается, что невозможно отменить существующий запрос на обновление, просто удалив метатег из документа. Как только синтаксический анализатор увидит метатег, он обновится независимо от того, какой трюк с JavaScript вы делаете. К сожалению, единственный способ преодолеть это - напрямую изменить HTML-страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...