在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

iOS系統(tǒng)webview與JS的交互

大小:0.3 MB 人氣: 2017-09-25 需要積分:1

  昨天寫(xiě)了Swift和JS的交互,既然寫(xiě)了就把OC的也寫(xiě)了出來(lái):

  第一部分:webview與Js的交互

  第二部分:設(shè)定cookie

  第三部分:修改header頭

  1

  交互

  #import “webView.h”

  #import 《JavaCore/JavaCore.h》//系統(tǒng)支持庫(kù)

  @protocol JSObjcDelegate 《JSExport》//定義web與JS交互的協(xié)議

  -(void)goToNextActivity:(NSString *)urlStr;//JS需要調(diào)用的方法,參數(shù)可有可無(wú),根據(jù)需要設(shè)定

  @end

  @interface webView ()《UIWebViewDelegate,JSObjcDelegate》//遵守協(xié)議

  @property (nonatomic,strong)JSContext * jsContext;//創(chuàng)建JSContext對(duì)象 我把它當(dāng)作上下文對(duì)象,用于連接JS和OC

  @end

  @implementation webView

  -(instancetype)initWithFrame:(CGRect)frame url:(NSURL *)url{

  self = [super initWithFrame:frame];

  if (self) {

  NSURLRequest *request = [NSURLRequest requestWithURL:url];

  self.delegate = self;

  [self loadRequest:request];

  }

  return self;

  }

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

  self.jsContext = [webView valueForKeyPath:@“documentView.webView.mainFrame.javaContext”];

  self.jsContext[@“myObj”] = self;//這里把self賦值給self.jsContext的myObj對(duì)象,那么在JS中就可以通過(guò)myObj調(diào)用oc方法了

  self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {

  context.exception = exceptionValue;

  NSLog(@“異常信息:%@”, exceptionValue);

  };

  }

  //webview調(diào)用方法

  -(void)goToNextActivity:(NSString *)urlStr{

  NSLog(@“goToNextActivity str:%@”,urlStr);

  }

  @end

  2

  cookie

  這里是每次請(qǐng)求的時(shí)候都進(jìn)行設(shè)定,所以方法寫(xiě)在了web開(kāi)始加載的方法里面

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

  NSDictionary *dic = @{@“TOKEN”:[DEFAULTS objectForKey:@“token”],@“UID”:[DEFAULTS objectForKey:@“userID”]};

  [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

  // 設(shè)定 cookie

  NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:

  [NSDictionary dictionaryWithObjectsAndKeys:

  [request.URL host], NSHTTPCookieDomain,

  [request.URL path], NSHTTPCookiePath,

  key,NSHTTPCookieName,

  obj,NSHTTPCookieValue,

  nil]];

  [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];

  // NSLog(@“cookie = %@”,cookie);

  }];

  return YES;

  }

  1

  header

  同樣是寫(xiě)在了webview開(kāi)始加載的方法里面

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

  NSMutableURLRequest *mutableRequest = [request mutableCopy];

  //這里加了一些判斷,避免死循環(huán),因?yàn)樾薷耐瓿珊體ebview需要重新加載request (其中DEFAULTS 是NSUserDefaults存了一些后臺(tái)程序返回的內(nèi)容)

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶(hù)評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 免费福利影院 | 亚洲精品视频在线看 | 夜夜春宵翁熄性放纵古代 | 鸥美毛片 | 亚洲黄网站wwwwww | 日本一区二区高清免费不卡 | 久久免费视频网站 | 中国一级特黄真人毛片免费看 | aaa一级片| 亚洲一区欧美二区 | 欧美人与动性视频在线观 | 亚洲一区二区三区在线视频 | 女生张开腿让男人桶 | 免费爱做网站在线看 | 2021久久精品国产99国产精品 | 国产成人精品日本亚洲直接 | 天天草天天操 | 91大神视频在线播放 | 天天摸天天看天天做天天爽 | 怡红院亚洲怡红院首页 | 成人看片在线观看 | 天天干天天色综合网 | 婷婷久久精品 | 美女视频一区二区三区 | 欧美成人性动漫在线观看 | 国产欧美日韩haodiaose | 69日本xxxxxxxxx内谢 | 小说老卫陈红张敏陈法蓉 | 夜夜骑狠狠干 | xxx日本69| 日韩三级在线观看视频 | 欧美性猛交xxxx黑人猛交 | 伊人久久大香线蕉综合亚洲 | 亚洲色图 在线视频 | 国产免费资源 | 国产精品午夜久久久久久99热 | 天堂中文在线资源库用 | 看黄免费在线 | 九九久久九九久久 | 色网站免费视频 | 永久黄网站色视频免费 |