iOS加載本地html注意事項(xiàng)

iOS加載本地HTML注意點(diǎn):

因?yàn)榍岸薐S CSS 的調(diào)用有嚴(yán)格的頁(yè)面結(jié)構(gòu) 所以我們導(dǎo)入文件的時(shí)候盡量選擇create folder reference!H恼蕖6拙鳌!

感謝以下這位指點(diǎn)迷津:

http://www.reibang.com/p/ee417ad66ad4

加載html方式:

1.第一種方式,使用loadRequest:方法加載本地文件NSURLRequest

NSString* path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];

NSURL* url = [NSURL fileURLWithPath:path];

NSURLRequest* request = [NSURLRequest requestWithURL:url] ;

[webView loadRequest:request];

2.第二種方式,使用loadHTMLString:baseURL:加載HTML字符串

NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];

NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

[webView loadHTMLString:html baseURL:baseURL];

3弃揽、第三種方法:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test_map.html" ofType:nil];

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL fileURLWithPath:path]];

[self.webView loadRequest:request];

補(bǔ)充交互:

1脯爪、早期的JS與原生交互:

/**

*? 獲取js交互事件

*? js事件里面加載了一個(gè)URL,在這個(gè)webView的代理方法中可以監(jiān)聽

*/

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

NSURL * url = [request URL];

if ([[url scheme] isEqualToString:@"firstclick"]) { // js里面之行的函數(shù)名(帶有大寫的也接收到小寫)

// 對(duì)html傳過(guò)來(lái)的參數(shù)做解析使用

NSArray *params =[url.query componentsSeparatedByString:@"&"];

NSMutableDictionary *tempDic = [NSMutableDictionary dictionary];

for (NSString *paramStr in params) {

NSArray *dicArray = [paramStr componentsSeparatedByString:@"="];

if (dicArray.count > 1) {

NSString *decodeValue = [dicArray[1] stringByRemovingPercentEncoding];

[tempDic setObject:decodeValue forKey:dicArray[0]];

}

}

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"方式一" message:@"這是OC原生的彈出窗" delegate:self cancelButtonTitle:@"收到" otherButtonTitles:nil];

[alertView show];

}

return YES;

}

2矿微、iOS 7之后痕慢,apple添加了一個(gè)新的庫(kù)JavaScriptCore,用來(lái)做JS交互:

// iOS 7之后 js與oc交互

- (void)webViewDidFinishLoad:(UIWebView *)webView {

// 在OC中獲取JS的上下文

JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

//定義好JS要調(diào)用的方法, share就是調(diào)用的share方法名

context[@"share"] = ^() {

// 監(jiān)聽到j(luò)s動(dòng)作 彈出oc提示框

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"方式二" message:@"這是OC原生的彈出窗" delegate:self cancelButtonTitle:@"收到" otherButtonTitles:nil];

[alertView show];

// 當(dāng)前調(diào)用該方法的對(duì)象

NSLog(@"對(duì)象---> %@", [JSContext currentThis]);

// JSContext提供了類方法來(lái)獲取參數(shù)列表

NSArray *args = [JSContext currentArguments];

for (JSValue *jsVal in args) {

// 獲取參數(shù)字符串

NSLog(@"jsVal.toString----> :%@", jsVal.toString);

}

};

}

3涌矢、 OC調(diào)用JS篇 (html在頁(yè)面上加載完成之后有效)

- (void)webViewDidFinishLoad:(UIWebView *)webView {

//方式一

/**? 注意:該方法會(huì)同步返回一個(gè)字符串掖举,因此是一個(gè)同步方法,可能會(huì)阻塞UI? */

// js函數(shù)名字showAlert(massage)

NSString *jsStr = [NSString stringWithFormat:@"showAlert('%@')",@"這里是JS中alert彈出的message"];

[self.webView stringByEvaluatingJavaScriptFromString:jsStr];

//方式二

/**? 使用JavaScriptCore框架實(shí)現(xiàn)oc調(diào)用js? */

JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

NSString *textJS = @"showAlert('這里是JS中alert彈出的message')";

[context evaluateScript:textJS];

}

4娜庇、使用第三方進(jìn)行交互:

常用的第三方如:

JSBridge

WebViewJavascriptBridge

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末塔次,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子名秀,更是在濱河造成了極大的恐慌励负,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匕得,死亡現(xiàn)場(chǎng)離奇詭異继榆,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)耗跛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門裕照,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)攒发,“玉大人调塌,你說(shuō)我怎么就攤上這事』菰常” “怎么了羔砾?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我姜凄,道長(zhǎng)政溃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任态秧,我火速辦了婚禮董虱,結(jié)果婚禮上咕娄,老公的妹妹穿的比我還像新娘再膳。我一直安慰自己退腥,他們只是感情好公壤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布滑负。 她就那樣靜靜地躺著甫恩,像睡著了一般鸣个。 火紅的嫁衣襯著肌膚如雪帅矗。 梳的紋絲不亂的頭發(fā)上匣砖,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天科吭,我揣著相機(jī)與錄音,去河邊找鬼猴鲫。 笑死对人,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拂共。 我是一名探鬼主播规伐,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼匣缘!你這毒婦竟也來(lái)了猖闪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肌厨,失蹤者是張志新(化名)和其女友劉穎培慌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柑爸,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吵护,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了表鳍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馅而。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖譬圣,靈堂內(nèi)的尸體忽然破棺而出瓮恭,到底是詐尸還是另有隱情,我是刑警寧澤厘熟,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布屯蹦,位于F島的核電站维哈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏登澜。R本人自食惡果不足惜阔挠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脑蠕。 院中可真熱鬧购撼,春花似錦、人聲如沸谴仙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)狞甚。三九已至锁摔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哼审,已是汗流浹背谐腰。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涩盾,地道東北人十气。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像春霍,于是被迫代替她去往敵國(guó)和親砸西。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • iOS開發(fā)系列--網(wǎng)絡(luò)開發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開發(fā)址儒,例如說(shuō)新浪微博芹枷、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 3,644評(píng)論 2 7
  • http://www.cnblogs.com/mddblog/p/5281748.html 一莲趣、整體介紹 UIWe...
    F麥子閱讀 1,227評(píng)論 0 2
  • 加載html方式: 1.第一種方式,使用loadRequest:方法加載本地文件NSURLRequest NSSt...
    LYPC_下里巴人閱讀 1,876評(píng)論 0 1
  • 隨著H5技術(shù)的興起鸳慈,在iOS開發(fā)過(guò)程中,難免會(huì)遇到原生應(yīng)用需要和H5頁(yè)面交互的問(wèn)題喧伞。其中會(huì)涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,062評(píng)論 1 8
  • 一、簡(jiǎn)介 近兩年隨著HTML5的迅速發(fā)展與日趨成熟溉仑,越來(lái)越多的移動(dòng)開發(fā)者選擇使用HTML5來(lái)進(jìn)行混合開發(fā)挖函,不僅節(jié)約...
    RainyGY閱讀 1,857評(píng)論 1 12