UIView上的UIWebview和切换按钮。
WebPage包含javascript。
我想控制UIWebView的javascript。
我想要的是每当UIView上的Button被切换时,javascript就会打开或关闭。
有可能吗?
如果是的话,我该怎么办?很遗憾我没有想法。
这是我的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];
}
答案 0 :(得分:0)
不要认为可以为UIWebView禁用JavaScript。
但是您可以使用UIWebView的stringByEvaluatingJavaScriptFromString:
方法,以执行特定的JS代码,所有JS函数等。
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
例如:
[ self.webView stringByEvaluatingJavaScriptFromString: @"colorChange();" ];
如果要停用您设置的onclick()
,可以设置一个带stringByEvaluatingJavaScriptFromString:
的全局变量,并在colorChange
函数中检查该变量。如果它有一些价值,那就做点什么,否则什么也不做。
var colorChangeEnabled = true;
function colorChange()
{
if( colorChangeEnabled == false ) return;
...
所以:
[ self.webView stringByEvaluatingJavaScriptFromString: @"colorChangeEnabled = false;" ];
答案 1 :(得分:0)
两部分问题,真的。
如果您在javascript中进行用户交互,则无法随后将调用内容代理到iOS SDK中。你可以反过来 - 导致从iOS元素在webview中发生一个动作,但你不能反过来。
其次,在UIWebView对象中没有用于禁用/启用javascript的公共API。
您可以为Safari打开/关闭它,因此有一种方法可以禁用引擎,但它似乎是一种私有方法,因此在任何应用商店提交时都禁止使用它。