91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>通訊/手機編程>

iOS系統webview與JS的交互

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

  昨天寫了Swift和JS的交互,既然寫了就把OC的也寫了出來:

  第一部分:webview與Js的交互

  第二部分:設定cookie

  第三部分:修改header頭

  1

  交互

  #import “webView.h”

  #import 《JavaCore/JavaCore.h》//系統支持庫

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

  -(void)goToNextActivity:(NSString *)urlStr;//JS需要調用的方法,參數可有可無,根據需要設定

  @end

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

  @property (nonatomic,strong)JSContext * jsContext;//創建JSContext對象 我把它當作上下文對象,用于連接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對象,那么在JS中就可以通過myObj調用oc方法了

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

  context.exception = exceptionValue;

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

  };

  }

  //webview調用方法

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

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

  }

  @end

  2

  cookie

  這里是每次請求的時候都進行設定,所以方法寫在了web開始加載的方法里面

  - (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) {

  // 設定 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

  同樣是寫在了webview開始加載的方法里面

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

  NSMutableURLRequest *mutableRequest = [request mutableCopy];

  //這里加了一些判斷,避免死循環,因為修改完成后webview需要重新加載request (其中DEFAULTS 是NSUserDefaults存了一些后臺程序返回的內容)

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 亚洲a区视频 | 欧美系列在线观看 | 六月婷婷网| 97精品久久天干天天蜜 | 亚洲va中文字幕 | 在线观看886影院成人影院 | 欧美日韩一区二区三区视频在线观看 | 加勒比一木道|视频在线看 加勒比在线免费视频 | 国产资源在线视频 | 一区二区三区在线免费 | 天天躁夜夜躁狠狠躁2021a | 久久精品人人爽人人爽快 | 中文字幕有码在线视频 | 国产一级特黄全黄毛片 | 四虎影视在线影院4hutv | 欧美aaaaa| wwxxx日本| 亚洲伊人99综合网 | 亚州1区2区3区4区产品乱码2021 | 天天做天天爱天天综合网 | 美女视频很黄很a免费国产 美女视频很黄很暴黄是免费的 | 午夜骚 | 色综合色综合 | 久久综合操 | 深夜视频在线 | 大乳妇女bd视频在线观看 | 亚洲图片综合区另类图片 | 久久综合九色综合97婷婷群聊 | 欧美色网在线 | 国产精品久久久久久久久ktv | 久久观看视频 | 免费一看一级毛片 | 免费国内精品久久久久影院 | 婷婷综合久久 | 在线免费观看视频 | 好吊色青青青国产在线观看 | 午夜影院黄色片 | 免费观看国产网址你懂的 | 久久在线精品 | 香蕉久久久久久狠狠色 | 一级毛片不收费 |