如何控制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,所以有一种方法来禁用引擎,但它似乎是一个私人的方法,所以它的使用将被禁止在任何应用程序商店提交。