如何控制UIWebView';s 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

这是UIWebview和UIView上的切换按钮

网页包括javascript

我想控制UIWebView的javascript

我想要的是,无论何时切换UIView上的按钮,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]; 

}
-(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:并深入研究属性。