如何控制UIWebView's javascript

How to control UIWebView's javascript

本文关键字:javascript UIWebView 何控制 控制      更新时间:2023-09-26

这是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]; 
}

不认为有可能为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对象中没有公共API来禁用/启用javascript。

你可以在Safari中打开/关闭它,所以有一种方法可以禁用引擎,但这似乎是一个私人方法,所以它的使用将在任何应用商店提交中被禁止。