如何控制UIWebView';s javascript
这是UIWebview和UIView上的切换按钮 网页包括javascript 我想控制UIWebView的javascript 我想要的是,无论何时切换UIView上的按钮,javascript都会打开或关闭 可能吗 如果是,我该怎么办?很遗憾我不知道 这是我的javascript代码:如何控制UIWebView';s javascript,javascript,ios,uiview,uiwebview,Javascript,Ios,Uiview,Uiwebview,这是UIWebview和UIView上的切换按钮 网页包括javascript 我想控制UIWebView的javascript 我想要的是,无论何时切换UIView上的按钮,javascript都会打开或关闭 可能吗 如果是,我该怎么办?很遗憾我不知道 这是我的javascript代码: - (void)viewDidLoad { [super viewDidLoad]; NSString *var = nil; var = @"<!DOCTYPE HTML
- (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];
}
-(void)viewDidLoad
{
[超级视图下载];
NSString*var=nil;
var=@“”
" "
" "
“新文件”
" "
“函数colorChange(){”
“var id=document.getElementById('yellow')
“var backcolor=id.style.backgroundColor;”
" "
“如果(背景色!=”)
" { "
“id.style.backgroundColor=”
“}否则{”
“id.style.backgroundColor='#ffff00'”
" } "
" "
"} "
" "
" "
" "
" "
" "
" "
"";
[self.webView loadHTMLString:var baseURL:nil];
}
不要认为可以为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;" ];
两部分的问题,真的 如果您正在使用javascript进行用户交互,它将无法随后代理对iOS SDK的调用。您可以执行相反的操作——从iOS元素在webview中执行操作,但不能执行相反的操作 其次,在UIWebView对象中没有用于禁用/启用javascript的公共API
您可以为Safari打开/关闭它,因此有一种方法可以禁用该引擎,但它似乎是一种私有方法,因此在提交任何应用商店时都将禁止使用它。实际上,您可以调用此iOS SDK。您可以收听shouldstartoad:withRequest:并深入研究属性。