1. 程式人生 > >JavaScriptCore原生與H5互動

JavaScriptCore原生與H5互動

這個是iOS7之後蘋果推出的一個JS於OC互動的一個框架,極大的方便了我們對js的操作

相關的幾個類
/*
JS執行的環境,同時也通過JSVirtualMachine管理著所有物件的生命週期,每個JSValue都和JSContext相關聯並且強引用context。
*/
#import "JSContext.h"
/*
JS物件在JSVirtualMachine中的一個強引用,其實就是Hybird物件。我們對JS的操作都是通過它。並且每個JSValue都是強引用一個context。同時,OC和JS物件之間的轉換也是通過它
*/
#import "JSValue.h"
/*
JS和OC物件的記憶體管理輔助物件。由於JS記憶體管理是垃圾回收,並且JS中的物件都是強引用,而OC是引用計數。如果雙方相互引用,勢必會造成迴圈引用,而導致記憶體洩露。我們可以用JSManagedValue儲存JSValue來避免。
*/
#import "JSManagedValue.h" /* JS執行的虛擬機器,有獨立的堆空間和垃圾回收機制。 */ #import "JSVirtualMachine.h" /* 一個協議,如果JS物件想直接呼叫OC物件裡面的方法和屬性,那麼這個OC物件只要實現這個JSExport協議就可以了。 */ #import "JSExport.h"

接下來就是如何去通過js來呼叫oc的方法了

//首先你要在本地的html檔案裡註冊一個按鈕,按鈕的打擊名字jsButton
<!DOCTYPE HTML>
<html lang="zh-CN">
  <body>
    <p
>
JavaScriptCore測試頁面</p> <body> <button onclick="jsButton()">JS按鈕</button> </body> </html> //然後在載入完成的方法裡通過JSContext來獲取相應操作的key值.key值是html檔案裡點選方法的名字,並且呼叫你需要的操作 - (void)webViewDidFinishLoad:(UIWebView *)webView { JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; context[@"jsButton"] = ^{ //在這裡呼叫你需要的操作 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"點選了JS按鈕" message:@"" preferredStyle:(UIAlertControllerStyleAlert)]; UIAlertAction *sureAlertAction = [UIAlertAction actionWithTitle:@"OK" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { }]; [alert addAction:sureAlertAction]; [self presentViewController:alert animated:YES completion:^{ }]; }; }

相關推薦

JavaScriptCore原生H5互動

這個是iOS7之後蘋果推出的一個JS於OC互動的一個框架,極大的方便了我們對js的操作 相關的幾個類 /* JS執行的環境,同時也通過JSVirtualMachine管理著所有物件的生命週期,每個

使用javaScriptCore實現原生H5互動

javaScriptCore與原生互動   1、H5調原生:    1》通過代理調原生,並回調(此處用到了jsExportAs):     1.1:代理調原生並傳參給原生:<input type="button" value="計算階乘"onclick="app.

原生H5互動介紹

    步驟如下: 1、允許webView載入JS 2、編寫js介面類 3、webView新增js介面 程式碼如下: 佈局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm

iOS原生H5頁面互動

一、原生框架<JavaScriptCore/JavaScriptCore> (1)JavaScriptCore: 是一種JavaScript引擎,主要為webKit提供指令碼處理能力,可以JS呼叫OC,也可以OC呼叫JS;   (2) JSContext: 代表

iOS原生H5雙向互動總結

1,單向通訊時候:webView可以利用代理方法擷取JS,來呼叫原生方法 其代理方法如下: - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)reque

Android開發之Webview中原生JS互動

文章目錄 概述 使用場景 互動方式 Java呼叫JS程式碼 JS呼叫Java程式碼 總結 概述 由於手機硬體資源的快速提升,使得采用混合開發的可能性逐漸成為現實並且流行起來。Android開發中

WKWebViewH5互動的兩種方式

互動方式一:原生互動(以WKWebView為栗子) 1.原生呼叫H5方法 [wkWebView evaluateJavaScript:@"js方法名" completionHandler:^(id _Nullable response, NSError * _Nullable err

NativeH5互動的那些事

前言 Hybrid開發模式目前幾乎每家公司都有涉及和使用,這種開發模式兼具良好的Native使用者互動體驗的優勢與WebApp跨平臺的優勢,而這種模式,在Android中必然需要WebView作為載體來展示H5內容和進行互動,而WebView的各種安全性、相容性的問題,我想大多數人與它友誼的小床

iOS常用方法——WKWebViewh5互動的實現

隨著前端開發的強大,原生與h5的互動用的也越來越多。 為什麼選用WKWebView,我們可以做一個對比,同一個web頁面,用UIWebView載入和用WKWebView來載入,記憶體佔用情況很容易看出來,回到原生頁面之後,UIWebView對應的記憶體也不會降

iOS開發H5互動的整理總結

UIWebView delegate 協議方法 //UIWebView自帶了一個方法, 可以直接呼叫JS程式碼(轉化為string型別的js程式碼) - (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString

android H5互動之基本

最基本的webView載入頁面 webView.loadUrl(url); 這裡面的url是String型別,可以載入本地的html頁面,如url =“file:///android_asset/index.html”; 載入網頁,如url =“www.baidu.co

Android JSBridge實現JavaH5互動詳細使用

前情: Android控制元件WebView的自帶的JavascriptInterface的介面,可以簡單實現Java與js的互動,但是侷限性很大。所以就出現了第三方庫JSBridge。JSB

android webviewh5互動時所遇到的坑

現在h5與原生的混合開發越來越多,身為一名移動端開發人員,必須要跟隨潮流步伐,掌握基本的與h5的互動技能。 手頭正好有個demo,算是為開始準備混合開發的android夥伴們準備的開胃菜。 也許有同學該有疑問了,android顯示html頁面的不就一個webview載入ur

iosH5互動H5調取本地相簿圖片

之前公司做了一個H5的web頁面,裡面需要調取本地相簿並給web頁面展示,並上傳後臺。 首先通過webView載入寫好的H5檔案。 與H5開發協商好,如果客戶端撲獲到某個固定地址說明就是要調起相簿,這時候你需要開啟相簿。 下面的callFun方法就是就用調起相簿。

H5android原生的JS互動

公司最近接手了一個電信的專案,其中最關鍵的技術就是H5頁面與android的互動。因為之前專案中H5與原生介面的載入動畫是分開寫的,導致大小以及效果有差距,所以我才有接觸兩者之間互動的學習機會。簡單

5月20日重點:當請求的參數是動態的形式時,原生apph5頁面之間數據交互的方法

post方法 註意 data 不能 images 動態 構建 parse 拼接 方案一: 1.app在打開H5頁面的時候,把需要給的參數,以get的形式,放在H5的url中。 2.然後H5的js從url中獲取到需要的參數,拼接到ajax請求的url中。 3.H5ajax請求

OCJS互動JavaScriptCore

JavaScriptCore初探 在iOS7之前,原生應用和Web應用之間很難通訊。如果你想在iOS裝置上渲染HTML或者執行JavaScript,你不得不使用UIWebView。iOS7引入了JavaScriptCore,功能更強大,使用更簡單。 ###JavaScriptCore

WebView之apph5間的互動

有時候,h5需要呼叫app的方法,並且回撥呼叫結果給h5,這就是app與h5之間的互動了。 1、javascript方式 h5呼叫app方法: 在app端定義要執行的方法,h5在需要的地方呼叫該方法。 app端: 第一步:初始化設定 WebSettings mS

Androidjs互動,帶進度條的載入H5頁面

private void initWebView() { WebSettings settings = wvResumeDetail.getSettings(); //支援JavaScript指令碼語言 settings

H5表單PHP互動學習筆記

今日在網上觀看視訊學習H5,其中有幾個知識點不是很熟悉,所以打算寫下這篇部落格來記錄一下,以便將來再回來檢視! 該課程分為了三個小節來開展,內容如下: 1、html 5表單常用知識點 1.1單項選擇 1.2多項選擇 1.3下拉列表 1.4文字域 2、P