2011-10-19 12 views
2

クライアントのウェブサイトには、デスクトップサイトに最適なオートリフレッシュ機能がありますが、私はiPhoneアプリを作成しており、モバイル版では無効にする必要があります。HTML自動更新を無効にしますか?

使用されるコードは次のとおりです。

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

私は可能であれば、それを無効にするにはJavaScriptを使用したいと思います。

ありがとうございました。

EDIT: 私はHTMLファイルにアクセスできないため、変更できません。私はXcodeのObjective-C側のコードでこれを行う必要があります。

答えて

0

あなたは "..." このJavaScriptで[webView stringByEvaluatingJavaScriptFromString:@"..."];、使用することができ、サイトを表示するのUIWebViewを使用していると仮定すると:

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]);}} 
:便宜上1行にまで凝縮

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ページを直接変更することです。

+0

私はあなたが意味することを得るが、私はそれをどのように実装するかについては正確ではない。以前はstringByEvaluatingJavaScriptFromStringを使用しましたが、値を変更または削除することはできません。 – Chase

+0

上記の1つのライナーをstringByEvaluatingJavaScriptFromStringにコピー&ペーストするだけで、HTMLページから悪いメタタグが削除されます。 –

+0

これは私が持っているものです。動いていない。私は引用符のためのエスケープシーケンスを正しく行ったかどうかはわかりません。 (var i = 0; i Chase

1

私はシンプル

このようなID id="meta-refresh"metaのタグを追加何かご紹介します:

<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 ca一度ロードすると無効にならない!同じ、一つの周りに正確な作業は、ユーザによって与えられた答えOld Postに見つけることができる XP1

上記デバイスが対象である場合、文書がロードされる前にチェックして、メタタグを除去するために、XMLHTTP requrest(AJAX)を使用していますデバイス(iphone)

OR

1は、デバイスがiPhone/iOS版ではありませんリフレッシュ動的にIDを使用することができます。最初のリフレッシュコールを回避するために動的チェックと要件を実行する必要がなくなります。メタタグを使用しないで

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 
} 
関連する問題