如何控制UIWebView的javascript

时间:2011-11-30 12:18:59

标签: javascript ios uiview uiwebview

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]; 

}

2 个答案:

答案 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打开/关闭它,因此有一种方法可以禁用引擎,但它似乎是一种私有方法,因此在任何应用商店提交时都禁止使用它。