UIWebView与javascript交互三通过OC页面来改变html页面上的值

有一件事要说一下哦, 《UIWebView与javascript交互一》这篇博客被几个网站给转载了,很开心,但是开心之余有一点觉得要说一下,大家转载别人的文章的时候记得说明一下转载的出处,有两方面的原因,第一就是尊重作者的劳动成果,另一方面,由于博客里有的时候有一些demo,但是转载的人并没有把demo的下载地址给贴出来,给看到博客的同学带来了很大的不便。

接上篇,我们已经实现了通过html按钮来传数据到oc页面,但是没有实现通过oc页面传数据到js页面,并修改html的页面,谈不上真正完全的交互,这里将和大家分享一下。

开始先把test.html的代码给大家分享一下:

<html>
    <head>
        <title>test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <script type ="text/javascript" src ="test.js"></script>
    </head>
    <body>
        <form name="myform" onsubmit ="return false;">
            <table>
                <tr>
                    <td height ="30" width ="320" align="center" bgcolor="#DC143C">I‘m Jack,I‘m an IOS coder</td>
                </tr>
                <tr>
                    <td height ="30" width ="320" align="center">
                        <input name ="input1" id ="input1" type="text" size="25" maxlength="100" >
                            </td>
                </tr>
                <tr>
                    <td height="30" width="60" align="center">
                        <input name ="submit" type="submit" value="submit" onClick ="check()">
                            </td>
                </tr>

                <tr>
                    <td height="30" width="60" align="center">
                        <input name ="changevalue" type="submit" value="changevalue" onClick ="change_value()" >
                            </td>
                </tr>
                <tr>
                    <td height ="30" width ="320" align="center">
                        <input name ="input2" id ="input2" type="text" size="25" maxlength="100" >
                            </td>
                </tr>

            </table>
        </form>

    </body>
</html>

其中有两个地方需要提醒大家一下,以免犯和我同样的错误哦

红线部分的onsubmit =”return false;”主要因为我用了button触发事件,submit默认刷新页面,所以要returnfalse来禁止触发事件后刷新页面。

红线部分,input的value和Onclick()函数的函数名字不能相同,要不然函数不能够被调用。

这两个地方都是自己不注意犯下的错误花了好长的时间又问了好几个人,最后才找到问题的所在。学的教训,大家一定要记得哦!!!

下面大家看下test.js文件的代码:

window.onerror = function(err) {
    log(‘window.onerror: ‘ + err);
};

function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewJavascriptBridge) {
        callback(WebViewJavascriptBridge);
    } else {
        document.addEventListener(‘WebViewJavascriptBridgeReady‘, function() {
                                  callback(WebViewJavascriptBridge);
                                  }, false);
    }
}

function check(){
    connectWebViewJavascriptBridge(function(bridge) {

                                   var str = document.getElementById(‘input1‘).value;//将第一个输入框的值传递到OC页面中去

                                   bridge.callHandler(‘submit‘, str, function(response) {
                                                      log(‘JS got response‘, response);
                                                      });

                                   });

}

function change_value(){

    connectWebViewJavascriptBridge(function(bridge) {
                                   bridge.init(function(message, responseCallback) {
                                               log(‘JS got a message‘, message);
                                               var data = { ‘Javascript Responds‘:‘Wee!‘ };
                                               log(‘JS responding with‘, data);
                                               responseCallback(data);
                                               });

                                   bridge.registerHandler(‘changeValueHandler‘, function(data, responseCallback) {

                                                          document.getElementById(‘input2‘).value =‘3‘;//改变html页面上第二个输入框的值

                                                          var responseData = { ‘Javascript Says‘:‘Right back atcha!‘ }
                                                          responseCallback(responseData)
                                                          });

                                   });

}

不多说了demo下载地址

另外今天看到了一片博客对我的思路的启发很大也和大家分享下:

http://honglu.me/2014/09/27/WebViewJavascriptBridge使用/

时间: 2024-08-24 01:13:29

UIWebView与javascript交互三通过OC页面来改变html页面上的值的相关文章

IOS中UIWebView和JavaScript交互(转自http://blog.2jun.net/2012/11/02/webviewandjs/)

IOS中UIWebView和JavaScript交互 当程序中使用到UIWebView控件的时候,难免会遇到需要与页面进行交互的情况.这种情况在android平台下比较容易处理,android平台下WebView控件的addJavascriptInterface()方法可以很轻松的完成交互,而IOS上就稍复杂一些. 页面与客户端的交互是通过JS来完成的,通常情况下与JS的交互可以分为两种:客户端传递给JS一些数据和JS向客户端请求一些本地操作.下面分别对这两种情况进行处理. JS向客户端请求本地

Xcode6 UIWebView与JavaScript交互(issue fix)

这篇文章中,有介绍UIWebView与JavaScript交互,在UIWebView截获JavaScript请求处理,从app的角度,这是JavaScript的Hook请求. 在Xcode6之前的App版本,JavaScript可以这样将Hook请求发送出来: HTML: <li><a href="testapp://function=test&callbackJS=testCallback">test link</a></li>

UIWebView与javascript交互二通过页面的响应事件获取页面输入框内的值

接上篇文章,上篇文章实现了UIwebview对html文件的加载和对js事件的响应,但是对html页面上输入的值没有获取. 今天就来说说这个首先要用到工具类WebViewJavascriptBridge 下载地址 然后将工具类导入到项目中. 其中test.js我做了如下的调整: window.onerror = function(err) { log('window.onerror: ' + err) } function connectWebViewJavascriptBridge(callb

UIWebView与javascript交互一

去年看了两本书上面都有提到UIWebView与javascript的交互,但是很少提交具体的操作.今年时间稍微闲下来,我觉得很有必要把这个知识点整理一下. 首先一定要储备一些简单的javascript知识,我看的是这本电子书<javascript从入门到精通>另外还要有一些简单的html知识的基础. 我主要实现的功能就是加载html文件,并操作html上的输入框,按钮进行操作. test.html的代码如下: <html> <head> <title>tes

IOS UIWebView与JavaScript交互实现Web App

上一篇文章讲到了Android WebView与JavaScript的交互问题,现在来讲一下IOS的UIWebView与JavaScript的交互问题.和Android的相比,IOS的会略显笨拙一些不大友好,然而也算是在未引用第三方框架的基础上完成了交互的问题.OK,现在开始吧. 1.首先在IOSA->Application下选择Single View Application创建一个IOS应用,命名为JSInteraction,然后我删去了Info.plist文件里Main storyboard

iOS 利用UIWebView与JavaScript交互的最简单办法

这里说的是针对iOS的!并且方法很简单!!并且验证可行的!!! 1, UIWebView调用 JavaScript 的函数: NSString* strValue = [webView stringByEvaluatingJavaScriptFromString:@"YourFunctionName('YourParameter')"]; 上面这句就是调用 JavaScript里面自定义的函数 YourFunctionName(传入参数'YourParameter',取得返回值赋给st

iOS 利用UIWebView与JavaScript交互的最简单办法(本人已验证可行)

本贴转自:http://blog.csdn.net/h_o_w_e/article/details/28887005 1, UIWebView调用 JavaScript 的函数: NSString* strValue = [webView stringByEvaluatingJavaScriptFromString:@"YourFunctionName('YourParameter')"]; 上面这句就是调用 JavaScript里面自定义的函数 YourFunctionName(传入

VC与JavaScript交互(三) ———— CWebPage类调用javascript函数(给js函数传参,并取得返回值)

①需要一个别人写好的类CWebPage,将其对于的两个文件WebPage.h和WebPage.cpp添加到工程中. ②添加WebBrowser控件,在视图/对话框类的头文件中#include "webbrowser2.h",增加成员变量m_webBrowser,调用Navigate()函数加载一个html页面. ③在对话框或者视图的实现文件中,加入#include "WebPage.h",在按钮的响应函数中就可以调用javascript函数了,具体代码如下: CWe

【iOS开发】UIWebView与JavaScript(JS) 回调交互

引用:http://blog.sina.com.cn/s/blog_693de6100102vi3w.html 很多关于object-c(简称:oc,是ios开发app使用的语言) 与 js 交互的文章都比较适用于 mac开发,iOS的webview 还是有所不一样, 参考:http://blog.sina.com.cn/s/blog_693de6100102vhuh.html 本文提供了一个很好解决 交互的思路. 自然,从oc到js,可以使用 stringByEvaluatingJavaScr