2011-10-19 114 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 
}