2011-10-19 119 views
2

客戶的網站具有自動刷新功能,該功能非常適用於桌面版網站,但我正在製作iPhone應用並需要在移動版上禁用它。禁用HTML自動刷新?

使用的代碼是:

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

我想如果可能的話用javascript禁用它。

謝謝。

編輯: 我無法訪問HTML文件,因此無法修改它。我需要通過Xcode中Objective-C一側的代碼來完成此操作。

回答

0

假設你正在使用一個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]);}} 

編輯:嗯......畢竟,通過簡單地從文檔中刪除meta標籤,就無法取消現有的刷新請求。一旦解析器看到元標記,它就會刷新,無論你做什麼的JavaScript欺騙。不幸的是,解決這個問題的唯一方法是直接修改HTML頁面。

+0

我明白你的意思,但我不確定如何實現它。我之前使用過stringByEvaluatingJavaScriptFromString,但不能更改或刪除值。 – Chase

+0

你應該能夠將上面的單行代碼複製粘貼到stringByEvaluatingJavaScriptFromString中,並且這將從HTML頁面中刪除壞元標記。 –

+0

所以這就是我所擁有的。它不工作。我不確定我是否對報價做了正確的轉義序列。 (myStringByEvaluatingJavaScriptFromString:@「var metaTags = document.getElementsByTagName(\」META \「); for(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)檢查加載文檔之前,取下meta標籤,如果該設備是目標設備(iphone)

OR

一個可以刷新使用動態ID的設備不是iPhone/iOS的。這將取消進行動態檢查和要求以避免首次刷新呼叫的要求。沒有使用meta標記

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 
}