ホームページ ウェブフロントエンド jsチュートリアル JavaScriptとIOS ObjectC間のやり取りの詳細説明と実装コード

JavaScriptとIOS ObjectC間のやり取りの詳細説明と実装コード

Mar 23, 2017 pm 03:00 PM

この記事では主にIOS OCとjsの間の相互作用の詳細な説明と実装コードを紹介します。必要な友人は

IOS OCとjsの間の相互作用の詳細な説明

JSインジェクションを参照してください。 OCを使用したJSコードをWebページに

JSインジェクションは、OCとJS間の対話とも呼ばれます

OCとJS間の対話にはブリッジ(仲介)が必要です。このブリッジはUIWebViewのプロキシメソッドです

Webページが初期コンテンツをロードします

#import "ViewController.h"

@interface ViewController ()<UIWebViewDelegate>

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@end
- (void)viewDidLoad {
  [super viewDidLoad];
  // 设置webView的代理
  self.webView.delegate = self;

  // 加载网页数据
  NSURL *URL = [NSURL URLWithString:@"http://m.dianping.com/tuan/deal/5501525"];
//  NSURL *URL = [NSURL URLWithString:@"https://www.hao123.com/?tn=93321723_hao_pg"];
  NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  [self.webView loadRequest:request];
}
ログイン後にコピー

UIWebViewのプロキシメソッド内で jsを使用してネイティブWebページを変更します

/// 网页加载完成之后调用的代理方法 : JS注入 : OC调用JS代码
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
  // 用于拼接JS代码的字符串
  NSMutableString *stringM = [NSMutableString string];

  // 拼接移除顶部导航的JS代码
  [stringM appendString:@"var headerTag = document.getElementsByTagName(&#39;header&#39;)[0]; 
  headerTag.parentNode.removeChild(headerTag);"];
  // 拼接移除橙色按钮的JS代码
  [stringM appendString:@"var footerBtnTag = document.getElementsByClassName(&#39;footer-btn-fix&#39;)[0]; 
  footerBtnTag.parentNode.removeChild(footerBtnTag);"];
  // 拼接移除底部布局的JS代码
  [stringM appendString:@"var footerTag = document.getElementsByClassName(&#39;footer&#39;)[0]; 
  footerTag.parentNode.removeChild(footerTag);"];
  // 拼接给img标签添加点击事件的JS代码
  [stringM appendString:@"var imgTag = document.getElementsByTagName(&#39;figure&#39;)[0].children[0]; 
  imgTag.onclick = function(){window.location.href=&#39;https://www.baidu.com&#39;};"];

  // 这个方法就是UIWebView提供的.专门做JS注入的方法
  [webView stringByEvaluatingJavaScriptFromString:stringM];
}
ログイン後にコピー

ネイティブネットワークリクエストのWebページジャンプをインターセプト

imgTag.onclick = function(){window.location.href=&#39;https://www.baidu.com‘}
ログイン後にコピー

imgTagをクリックすると、ネットワークリクエストを積極的に送信します

アクティブの目的ネットワークリクエストの送信: UIWebView がカスタム URL をインターセプトできるようにするためです

カスタマイズされた URL を使用して、クリックしたラベルが私がデザインしたラベルであるかどうかを判断/区別します

一意の URL をカスタマイズして、クリックされたラベルが一意であることを示します

要約すると、これは 2 つのステップです

最初のステップ: JS がラベルのクリック イベントを挿入し、カスタム URL リクエストをアクティブに送信します

2 番目のステップ: UIWebView でカスタム URL リクエストをインターセプトし、そして、リクエストを決定します

JS間接呼び出しOC: JSとOCの間の対話

Webページがロードを開始しようとしているときに呼び出されるプロキシメソッド: webView上のすべてのネットワークリクエストをインターセプトできます

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
  // 获取拦截到的所有的请求
  NSString *URLString = request.URL.absoluteString;
  //https://m.baidu.com/?from=1015143h
  //  NSLog(@"%@",URLString);

  if ([URLString isEqualToString:@"https://m.baidu.com/?from=1015143h"]) {
    NSLog(@"我点击的是imgTag");

    // 当我知道点击的是imgTag时,自动push
    //http://www.csdn.net/

    NSURL *URL = [NSURL URLWithString:@"http://www.csdn.net/"];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
    [self.webView loadRequest:request];
//    TestViewController *testVC = [[TestViewController alloc] init];
//    [self.navigationController pushViewController:testVC animated:YES];

    // 因为这个地址是无效地址.不需要加载的
    return NO;
  }

  // 返回YES的作用 : 表示你拦截到的请求,允许正常的发送出去;反之,不允许拦截到的请求发送出去
  return YES;
}
ログイン後にコピー

以上がJavaScriptとIOS ObjectC間のやり取りの詳細説明と実装コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Apple の iOS 18 の最初のバージョンには、深刻な発熱、WeChat の遅延など、非常に多くのバグがあることが明らかになりました。 Apple の iOS 18 の最初のバージョンには、深刻な発熱、WeChat の遅延など、非常に多くのバグがあることが明らかになりました。 Jun 13, 2024 pm 09:39 PM

毎年恒例の WWDC が終了し、間違いなく iOS18 がみんなの注目の的になっています。現在、多くのiPhoneユーザーがiOS18へのアップグレードを急いでいますが、さまざまなシステムバグが人々を不快にさせています。一部のブロガーは、「バグが非常に多い」ため、iOS18にアップグレードする場合は注意する必要があると述べています。このブロガーは、iPhoneがメインマシンの場合、最初のバージョンには多くのバグがあるため、iOS18にアップグレードしないことをお勧めすると述べています。また、現在発生しているいくつかのシステム バグについてもまとめました。 1. アイコン スタイルの切り替えが停止し、アイコンが表示されない場合があります。 2. 懐中電灯の幅のアニメーションが失われることがよくあります。 4. WeChat メッセージのプッシュに遅延が発生します。 10 秒。時々電話ができなくなり、画面が真っ暗になります。

Apple、iOS/iPadOS 18 Beta 4アップデートを再リリース、バージョン番号は22A5316kに引き上げ Apple、iOS/iPadOS 18 Beta 4アップデートを再リリース、バージョン番号は22A5316kに引き上げ Jul 27, 2024 am 11:06 AM

手がかりを提出してくれたネチズンの Ji yingkesi、xxx_x、フライド トマト、テレンス、スパイシー チキン ドラムスティックに感謝します。 7 月 27 日のニュースによると、Apple は本日、開発者向けに iOS/iPadOS 18 Beta 4 アップデートを再リリースしました。内部バージョン番号は 22A5316j から 22A5316k にアップグレードされました。現時点では、2 つの Beta 4 バージョン アップデートの違いは不明です。登録された開発者は、「設定」アプリを開いて「ソフトウェア アップデート」セクションに入り、「ベータ アップデート」オプションをクリックして、iOS18/iPadOS18 開発者ベータ設定を切り替えてベータ バージョンを選択できます。ベータ版をダウンロードしてインストールするには、開発者アカウントに関連付けられた Apple ID が必要です。 iO 7 月 24 日の報道

Apple、iOS 18に導入される準同型暗号化用のオープンソースSwiftパッケージをリリース Apple、iOS 18に導入される準同型暗号化用のオープンソースSwiftパッケージをリリース Jul 31, 2024 pm 01:10 PM

7月31日のニュースによると、Appleは昨日(7月30日)プレスリリースを発行し、Swiftプログラミング言語で準同型暗号化を可能にする新しいオープンソースSwiftパッケージ(swift-homomorphic-encryption)のリリースを発表した。注: 準同型暗号 (HE) とは、暗号文の準同型演算特性を満たす暗号アルゴリズムを指します。つまり、データを準同型暗号化した後、暗号文に対して特定の計算を実行し、得られた暗号文の計算結果を同時に処理します。状態復号後の平文は、平文データに対して同じ計算を直接実行することと同等であり、データの「不可視性」が実現されます。準同型暗号技術は、基になる暗号化されていないデータを運用プロセスに漏らすことなく、暗号化データを計算できます。

更新 |ハッカーが EU 外の iPad に Epic Games Store と Fortnite をインストールする方法を説明 更新 |ハッカーが EU 外の iPad に Epic Games Store と Fortnite をインストールする方法を説明 Aug 18, 2024 am 06:34 AM

更新: Saunders Tech は、EU 外の iPad に Fortnite と Epic Games Store をインストールする方法を説明するチュートリアルを YouTube チャンネルにアップロードしました (ビデオは下に埋め込まれています)。ただし、このプロセスには iO の特定のベータ版が必要なだけではありません。

Apple の iOS 18「Boundless Notes」アプリの新機能: シーン機能の拡張、グリッド配置の導入 Apple の iOS 18「Boundless Notes」アプリの新機能: シーン機能の拡張、グリッド配置の導入 Jun 02, 2024 pm 05:05 PM

6月1日のニュースによると、テクノロジーメディアAppleInsiderは本日ブログ投稿を公開し、AppleがiOS18システムの「Freeform」アプリケーション拡張機能の「Scenes」の新しいナビゲーション機能を開始し、オブジェクトの位置合わせの新しいオプションを追加すると述べた。 「Wubianji」アプリの紹介 まず、「Wubianji」アプリについて簡単に紹介します。このアプリは 2022 年にリリースされ、現在 iOS、iPadOS、macOS15、visionOS バージョンがリリースされています。 Apple の公式紹介文は次のとおりです。「Boundless Notes」は、インスピレーションを現実にするための優れたツールです。ほぼすべてのファイル タイプをサポートする柔軟なキャンバスで、プロジェクトをスケッチしたり、ムードボードをデザインしたり、ブレインストーミングを開始したりできます。 iCloud を使えば、すべてのボードを

Apple iOS 17.5 RC バージョンがリリース: EU の iPhone ユーザーが Web サイトからアプリをダウンロードできるようになります Apple iOS 17.5 RC バージョンがリリース: EU の iPhone ユーザーが Web サイトからアプリをダウンロードできるようになります May 08, 2024 am 09:30 AM

[アップグレード チュートリアルに直接アクセスするには、ここをクリックしてください] 5 月 8 日のニュースによると、Apple は本日、iOS17.5RC アップデート (内部バージョン番号: 21F79) を iPhone ユーザーにプッシュしました。このアップデートは最後のリリースから 70 日後です。 iOS/iPadOS/watchOS/macOS 開発版とパブリックベータ版をアップグレードするにはどうすればよいですか? iOS/iPadOS17 開発者プレビュー版およびパブリック ベータ版をアップグレードするには、友人が共有したエクスペリエンスを参照できます: エクスペリエンス 投稿 1||エクスペリエンス 投稿 2||エクスペリエンス 投稿 3||エクスペリエンス 投稿 4。 iOS/iPadOS 16.4 Developer Preview Beta 1 からは、Apple Developer Program に登録する必要があります。登録後、システムの [設定] [ソフトウェア アップデート] を開き、アップグレード オプションを表示します。 iPhone または IP アドレスに注意してください。

Apple iOS/iPadOS 18 Developer Preview Beta 4 リリース: CarPlay 壁紙の追加、設定オプションの整理、カメラ制御の強化 Apple iOS/iPadOS 18 Developer Preview Beta 4 リリース: CarPlay 壁紙の追加、設定オプションの整理、カメラ制御の強化 Jul 24, 2024 am 09:54 AM

ネチズンのおかげでスパイシーチキンレッグバーガー、ソフトメディアの新しい友達2092483、手書きの過去、DingHao、Xiaoxing_14、Wowotou Eat Big Kou、Feiying Q、ソフトメディアの新しい友達2168428、Slades、Aaron212、ハッピーリトルハリネズミ、リトルアール、小さな手がかり魚を食べるミルクキャット! [アップグレード チュートリアルに直接アクセスするには、ここをクリックしてください] 7 月 24 日のニュースによると、Apple は本日、iOS/iPadOS18 開発者プレビュー バージョン Beta4 アップデート (内部バージョン番号: 22A5316j) を iPhone および iPad ユーザーにプッシュしました。このアップデートは 15 日後です。最後のリリース。 Carplay 壁紙 Apple が CarPlay に壁紙を追加し、ライトモードとダークモードをカバーしています。その壁紙スタイルは iPhone に似ています。

Haqu K2 プロジェクターはオリンピックの情熱と夢を手の届くところにもたらします Haqu K2 プロジェクターはオリンピックの情熱と夢を手の届くところにもたらします Jul 24, 2024 pm 01:34 PM

終わったばかりのヨーロッパカップ決勝では、自分が応援するチームを夢中になって応援しましたか?来たるパリオリンピックでも、各競技のハイライトの瞬間を完璧に捉えることを楽しみにしていますか?中でも、高品質の視聴機器を備えていることが重要です。 Haqu K2 プロジェクターは、コストパフォーマンスが高く、優れたパフォーマンスを備えているため、ゲーム視聴に最適なプロジェクターです。高輝度で鮮明な画質だけでなく、ゲームのあらゆる瞬間を間近に感じられる臨場感あふれる視聴体験を提供します。あなたはすでにそのようなデバイスに惹かれていますか?オリンピックの情熱と夢をご自宅で楽しめること間違いなしです。 Haqu K2 の最も親密なハイライトは、210° のスーパー角度調整で、天井でも壁でも映画を見るのに便利です。

See all articles