項目里需要原生與H5進行交互,使用到了registerHandler献丑、callHandler,WebViewJavaScriptBridge在iOS代碼里有對應(yīng)的removeHandler方法
但是在WebViewJavaScriptBridge_JS文件夾中沒有removeHandler方法侠姑,于是新增里以下JS
window.GaiaWebViewJavascriptBridge 里添加removeHandler
window.GaiaWebViewJavascriptBridge = {
registerHandler: registerHandler,
callHandler: callHandler,
disableJavscriptAlertBoxSafetyTimeout: disableJavscriptAlertBoxSafetyTimeout,
_fetchQueue: _fetchQueue,
_handleMessageFromObjC: _handleMessageFromObjC,
removeHandler: removeHandler,
};
messageHandlers是默認(rèn)處理函數(shù)创橄,當(dāng)JS調(diào)用OC方法時,根據(jù)方法名稱找到不同的OC的block莽红,或通過send()方法調(diào)用OC時妥畏,調(diào)用該默認(rèn)messageHandlers。
所以實現(xiàn)removeHandler方法船老,只需要將messageHandlers對應(yīng)的鍵值對刪除即可咖熟。
實現(xiàn)removeHandler方法
function removeHandler(handlerName) {
if(messageHandlers[handlerName]){
delete messageHandlers[handlerName];
}
}
擴展:
WebViewJavaScriptBridge是一個輕量的OC與JS橋接機制圃酵,主要包含三個類柳畔,JS端window.WebViewJavascriptBridge,OC端WebViewJavascriptBridge和WebViewJavascriptBridgeBase郭赐。橋接類支持JS調(diào)用OC方法薪韩,OC調(diào)用JS方法。
JS調(diào)用OC通過重定向URL并獲取HandlerName來調(diào)用捌锭,OC調(diào)用JS通過stringByEvaluatingJavaScriptFromString調(diào)用俘陷。
參考網(wǎng)上資料:https://blog.csdn.net/panfeng200866/article/details/60591015