微信如何实现向浏览器注入JS API,并且调用方式就像浏览器原生API一样?
首先,我是一名前端。最近公司在试验iOS与H5混合开发,那么肯定少不了js与OC的通信。之前了解到微信浏览器内置了大量JS API来调用原生功能,我猜测应该是通过OC注入的。并且这些API是可以执行js回调的,灵活度很高,不过接口好像都是异步的。最近我在google如何实现,发现以前是有一种OC通过拦截页面请求的方式,让js调用OC接口,但似乎有很多局限性。请问有更好的解决办法吗?iOS7 开放的JavascriptCore框架,可以在此应用吗?
回复内容:
泻药请阅读资料:
JavaScriptCore
当然可以在这里用。应该说JavaScriptCore就是用在这里的。
当然,你也可以看看ReactNative是怎么把Objective-C和JavaScript联合起来的。 泻药
偶没整过微信和端开发
估摸着是这样的
你姑且看看好了
在高局限性的ios上
肯定是通过OC通过拦截页面请求的方式,让js调用OC接口来实现的
只不过 jsb (jsBridge)是在页面插入个 iframe
然后根据传入的 action 字符串名字构建出特殊的 scheme 给 iframe
然后 OC 监听这个 frame 的 url change 事件来截获 scheme
并分析其字符串
调用指定 OC 方法
由于监听事件后才能继续处理
所以jsb 相关 api 设计都是异步的。
方法运行完成后
根据全局内注册的hash(用来与回调对应)来找出该执行哪个回调
用webview api 内具有 execute script 功能的 api 拼接出js代码字符串来执行,
比如 :
webview.frame.get(0).execscript("window.jsb.getCallback('" + actionname +', '" + param+ "' )")
当然偶写的不是OC语法的玩意
凑合看看吧。
反正偶觉得在功能提供有限的移动端webview上也就这样了,没更好的方法。
(要是 PC 端的QT之类,才不用这么麻烦呢,只要是C++静态函数(方法)
直接就能挂在webvie内指定的js对象(包括全局对象)上
然后js就能直接调用了,还是同步的) oc有个 webview.stringByEvaluatingJavaScriptFromString 来通过字符串执行js,注入js就是执行代码,比如接口声明,windows.wxBridge=function 之类的就行了
真正通信是莫大的答案里,拦截网络通信方式 js bridge 可以去唐巧的博客上逛逛,主要看js和oc的通信

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Google は、Pixel 8 シリーズで DisplayPort 代替モードを導入しており、新たに発売された Pixel 9 ラインナップにも搭載されています。これは主に、接続された画面でスマートフォンのディスプレイをミラーリングするためにありますが、デスクトップにも使用できます。

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

Googleは最近、Pixel 9ラインのTensor G4に関するパフォーマンスの懸念に対応しました。同社は、このSoCはベンチマークを上回るように設計されていないと述べた。代わりに、チームは Google が求めている分野でパフォーマンスを向上させることに重点を置きました。

Android Authority が、Google が Android 14 QPR3 Beta 2.1 内に隠していた新しい Android デスクトップ モードをデモンストレーションしてから数か月が経過しました。 Google が Pixel 8 と Pixel 8 に DisplayPort Alt Mode サポートを追加することに追随して登場

Google の AI Test Kitchen には、ユーザーが遊べる一連の AI 設計ツールが含まれており、現在、世界 100 か国をはるかに超える国のユーザーに公開されています。この動きにより、世界中の多くの人が Imagen 3、Google を使用できるようになるのは初めてです。

Google の新しい Pixel 9 シリーズには、以前のラインナップには存在しなかった新しいバリエーションである Pixel 9 Pro XL が導入されました。これは基本的に非 XL バージョン (Amazon で予約注文) と同じですが、名前が示すように、画面が大きくなっています。二人は

ヒントを提供してくれたネチズン Yaochi Qinglian、DREAMM_、Ji Ren e に感謝します。 [アップグレード チュートリアルに直接アクセスするには、ここをクリックしてください] 8 月 21 日のニュースによると、Apple は本日、iOS/iPadOS18 開発者プレビュー バージョン Beta7 アップデート (内部バージョン番号: 22A5346a) を iPhone および iPad ユーザーにプッシュしました。このアップデートは、前回のアップデートとは別のものです。ベータ/RC リリースは 8 日。 Apple の Beta5 および Beta6 アップデートは安定している傾向があり、重要な新機能は導入されません (主にコントロール センターの詳細を調整します)。Apple は 9 月の正式リリースに備えてバグを修正し、エクスペリエンスを改善することに重点を置いています。したがって、Apple が本日リリースした Beta7 アップデートは、理論的には iOS/iPadOS18 の最後のベータ版アップデートとなるはずです。

Google Pixel 9 Pro および Pro XL は、Samsung Galaxy S24 Ultra、Apple iPhone 15 Pro および Pro Max などに対する Google の答えです。 Daniel Sin は YouTube (下記をご覧ください) で Google Pixel 9 Pro XL と iPhone 15 Pro Max を比較しています。
