如何控制UIWebView的JavaScript

这是UIWebview和切换UIView上的button。

网页包括JavaScript。

我想要控制UIWebView的JavaScript。

我想要的是,每当UIView上的button切换,JavaScript打开或closures。

可能吗?

如果是这样,我该怎么办? 我不知道该怎么办

这是我的JavaScript代码:

- (void)viewDidLoad { [super viewDidLoad]; NSString *var = nil; var = @"<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>" "<html> " " <head> " " <title> New Document </title> " "<script type='text/javascript'> " "function colorChange(){ " " var id=document.getElementById('yellow'); " " var backcolor = id.style.backgroundColor; " " " " if (backcolor != '') " " { " " id.style.backgroundColor = ''; " " }else{ " " id.style.backgroundColor = '#ffff00'; " " } " " " "} " "</script> " " </head> " " <body> " "<script type='text/javascript'> " "</script> " " " "<span id='yellow' ><a href=\"javascript:void(0)\" onclick='colorChange();'><font size=12>text</font></a></span></head></html>"; [self.webView loadHTMLString:var baseURL:nil]; } 

不要以为可以禁用UIWebView的JavaScript。

但是您可以使用UIWebView的stringByEvaluatingJavaScriptFromString:方法,以执行特定的JS代码,所有的JS函数等

 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; 

例如:

 [ self.webView stringByEvaluatingJavaScriptFromString: @"colorChange();" ]; 

如果你想停用你设置的onclick() ,你可以用stringByEvaluatingJavaScriptFromString:来设置一个全局variables,然后检查colorChange函数中的variables。 如果它有一些价值,那么做点什么,否则什么也不做。

 var colorChangeEnabled = true; function colorChange() { if( colorChangeEnabled == false ) return; ... 

所以:

 [ self.webView stringByEvaluatingJavaScriptFromString: @"colorChangeEnabled = false;" ]; 

两部分问题,真的。

如果您在JavaScript中进行用户交互,则不能将呼叫代理到iOS SDK中。 你可以做相反的事情 – 从iOS元素的webview中发生一个动作,但是你不能做相反的事情。

其次,在UIWebView对象中没有禁用/启用JavaScript的公共API。

您可以打开/closuresSafari,所以有一种方法来禁用引擎,但它似乎是一个私人的方法,所以它的使用将被禁止在任何应用程序商店提交。