1. 程式人生 > >iOS webView js和Objective c互動

iOS webView js和Objective c互動

常見問題, 使用webView時, 常常需要呼叫Objective c的方法。

兩種方式可以完成需求, 簡單記錄方便日後常看。

第一種是網頁js呼叫方法loadURL();

例如:

網頁端:

loadURL("myWebView://callfunc?param1=1&param2=2.......");

iOS端:webView代理

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *url = [[request URL].absoluteString stringByRemovingPercentEncoding];
    NSLog(@"%@", url);
    if ([url hasPrefix:@"myWebView:"]) {
        //呼叫網頁,彈出視窗
        [webView stringByEvaluatingJavaScriptFromString:@"alert(1);"];
    }
    return YES;
}

第二種方法

在iOS程式碼處獲取javaScriptContext, 得到上下文。 具體程式碼: iOS端:webView代理
- (void)webViewDidFinishLoad:(UIWebView *)webView
{

    JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    context[@"test1"] =  ^ NSString *() {
        NSArray *args = [JSContext currentArguments];
        for (id obj in args) {
            NSLog(@"%@",obj);
        }
        return @"123";
    };
    
}

此處, 申明一個方法名為test1的方法。 網頁端, js直接呼叫普通方法一樣,直接呼叫即可。

相關推薦

iOS webView jsObjective c互動

常見問題, 使用webView時, 常常需要呼叫Objective c的方法。 兩種方式可以完成需求, 簡單記錄方便日後常看。 第一種是網頁js呼叫方法loadURL(); 例如: 網頁端: load

iOSjsobjective-c互動

因為在iOS中沒有WebKit.Framework這個庫的,所以也就沒有 windowScriptObject物件方法了。要是有這個的方法的話 就方便多了,(ps:MacOS中有貌似) 現在我們利用其他方法去達到js與objective-c的互動效果。 首先是obje

iOSWebView的使用、JavascriptObjective-C互動

現在的App越來越有直接在一個View中擺個WebView,然後裡面鑲嵌個HTML5網頁,再加些和手機系統聯絡的方法的趨勢了。這樣做,以免IOS Apps一套,安卓那邊一套,HTML5的手機網頁版又一套。我都懶得煩了,一套HTML5程式碼吃遍天下,反正現在的HTML5網頁已

iOS開發核心語言Objective C —— 面向對象思維、settergetter方法及點語法

才幹 各路 alt .net 行為 變量的作用域 fadein 格式 讀取 本分享是面向有意向從事iOS開發的夥伴們。或者已經從事了iOS的開發人員。假設您對iOS開發有極高的興趣,能夠與我一起探討iOS開發。一起學習,共同進步。假設您是零基礎,建議您先

iOS UI入門——使用Objective-CSwift實現警告檢視操作列表(UIAlertView,UIActionSheet,UIAlertController)

警告彈框和操作列表在開發中常用到,iOS9之後,UIAlertView和UIActionSheet都會報黃色的警告,但是還是依然可以使用的。在這裡主要介紹一在這三個控制元件在Objective-C和Swift下的使用程式碼。 Objective-C程式碼: #import "Vi

iOS入門如何選擇Swiftobjective-c

學oc吧,學完估計也就淘汰了。學swift吧,短時間內普及機率太低,即便學完了,大部分老專案還是用oc.. 不學oc吧,放眼望去現在全是oc,swift完全沒有用武之地。 不學swift吧,說不上那

iOS UI入門——使用Objective-CSwift含tableViewCell的UITableViewCell基類的實現

繼承是面嚮物件語言的一種特性,在開發中經常用到。基類的存在也大大的方便了開發,能減少很多重複的程式碼。 Objective-C程式碼: #import "BaseTableViewCell.h" @implementation BaseTableVie

iOS入門怎樣選擇Swiftobjective-c

art 合作 項目開發 wwdc mil 應該 技術 新手 個人 版權聲明:本文為博主原創文章,未經博主同意不得轉載。博主微信:lofocus https://blog.csdn.net/

SwiftObjective-C混合編程——Swift調用OC

分享 發現 load 另一個 == 方法 代碼 swift 應用 在iOS應用的開發中。Swift必將代替OC,兩者的趨勢是“短期共存,長期代替”。但曾經有太多的代碼是用OC語言完畢的,而Swift的開發也從 OC中繼承了非常多的特性。兩者也是有非常多的類

Swift 4 Objective-C 混合編程(一) 快速起步

命名方式 import 編譯器 選擇性 工程 Swift 4 和 Objective-C 在同一個工程裏的混搭編程的方法你可以在 xcode 裏同時使用 Swift 和 Objective-C(以下簡稱OC)來寫代碼,混搭編程的好處很多,比如允許大量代碼的復用,在性能和開發效率之間找到平衡

iOS 編寫高質量Objective-C程式碼(六)

級別: ★★☆☆☆ 標籤:「iOS」「Block」「Objective-C」 作者: MrLiuQ 審校: QiShare團隊 前言: 這幾篇文章是小編在鑽研《Effective Objective-C 2.0》的知識產出,其中包含作者和小編的觀點,以及小編整理的一些demo。希望能幫助大家以簡潔

iOS 編寫高質量Objective-C程式碼(八)

級別: ★★☆☆☆ 標籤:「iOS」「Foundation」「Objective-C」 作者: MrLiuQ 審校: QiShare團隊 前言: 這幾篇文章是小編在鑽研《Effective Objective-C 2.0》的知識產出,其中包含作者和小編的觀點,以及小編整理的一些demo。希望能幫助

iOS 編寫高質量Objective-C程式碼(五)

前言: 這幾篇文章是小編在鑽研《Effective Objective-C 2.0》的知識產出,其中包含作者和小編的觀點,以及小編整理的一些demo。希望能幫助大家以簡潔的文字快速領悟原作者的精華。 在這裡,QiShare團隊向原作者Matt Galloway表達誠摯的敬

iOS開發應該選擇Objective-C還是Swift

iOS開發需要知道Objective-C 當Apple釋出了Swift之後,我聽見人們都說:“趕快,我現在可以成為一個不用學習Objective-C的iOS開發者了。”在這裡我有三個建議想給這些人們。 1.如果你想成為一個iOS開發者,你仍然需要學習Objective-

淺談SwiftObjective-C之間的那點事。。。

Swift 是一種新的程式語言,用於編寫 iOS 和 OS X 應用。Swift 結合了 C 和 Objective-C 的優點並且不受C相容性的限制。Swift 採用安全的程式設計模式並添加了很多新特性,這將使程式設計更簡單,更靈活,也更有趣。Swift 是基

製作 Swift Objective-C Mixed 的 Pod

知識背景 What did CocoaPods do? In Xcode, with references directly from the ruby source, it: Creates or updates a workspace. Adds your proj

在 Windows 上安裝使用 GNUstep Objective-C

除了在 Mac 系統上使用 Objective-C,你還可以在 Windows 上下載並安裝 GNUstep 和 Objective-C 環境,接下來我們就介紹詳細的安裝和使用的步驟。 下載 GNUstep GNUstep 環境可通過 Windows 下的 MinGW

Swift開發指南:使用Swift與CocoaObjective-C(Swift 4)

與Objective-C API進行互動 互操作性是能夠在任何一個方向上與Swift和Objective-C進行介面,讓您訪問並使用以其他語言的檔案中的一些程式碼。當您開始將Swift整合到應用程式開發工作流程中時,瞭解如何利用互操作性來重新定義、改進和增

SwiftObjective-C的相同點不同點

Swift和Objective-C的聯絡 Swift與Objective-C共用同一套執行時環境我們編寫程式,讓程式執行起來,被機器執行的程式碼並非全部是由我們自己來編寫的。需要同時執行很多預先寫好的支援性的程式碼,才能讓我們自己的程式碼執行起來。程式並非單

asp.net對cookie的操作(前臺js後臺c#程式碼)

    CSDN廣告是越來越多了,所有部落格筆記不再更新,新網址 DotNet筆記 (一) 後臺C#程式碼對cookie的操作: 看一下程式碼 ///////////////////////////////-----cookie建立\設定的操作--