There is one thing I want to say. The blog "UIWebView and JavaScript Interaction 1" has been reprinted by several websites. I am very happy, but besides being happy, I have something to say. Everyone When reprinting other people's articles, remember to indicate the source of the reprint. There are two reasons. The first is to respect the fruits of the author's labor. On the other hand, because sometimes there are some demos in the blog, but the person who reprinted them did not include the demos. The download address was posted, which caused great inconvenience to the students who saw the blog.
Continuing from the previous article, we have implemented the method of transmitting data to the oc page through the html button, but we have not implemented the method of transmitting data to the js page through the oc page and modifying the html page. There is no real and complete interaction. Here we will Share it with everyone.
Let me start by sharing the code of test.html with you:
<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>
There are two places that I need to remind you to avoid making the same mistakes as me
Red line Part of the onsubmit = "return false;" is mainly because I used a button to trigger the event, and submit refreshes the page by default, so returnfalse is required to prevent the page from being refreshed after the event is triggered.
In the red line part, the value of the input and the function name of the Onclick() function cannot be the same, otherwise the function cannot be called.
These two mistakes were made by me accidentally. It took me a long time and asked several people before I finally found the problem. Everyone must remember the lessons learned! ! !
Let’s take a look at the code of the test.js file:
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) }); });}
Not much to say about the demo download address
In addition, I saw a blog today that greatly inspired my ideas. Also share it with everyone:
http://honglu.me/2014/09/27/WebViewJavascriptBridge usage/