簡體   English   中英

如何控制UIWebView的JavaScript

[英]How to control UIWebView's javascript

是UIWebview和UIView上的切換按鈕。

網頁包含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]; 

}

不要以為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元素在Web視圖內發生操作,但是您不能做相反的操作。

其次,在UIWebView對象中沒有用於禁用/啟用javascript的公共API。

您可以為Safari打開/關閉它,因此有一種方法可以禁用引擎,但是它似乎是私有方法,因此在所有應用商店提交中均禁止使用該引擎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM