WebViewJavaScriptBridge 添加remove

2022-03-04  本文已影响0人  小小小小饼

项目里需要原生与H5进行交互,使用到了registerHandler、callHandler,WebViewJavaScriptBridge在iOS代码里有对应的removeHandler方法

企业微信截图_e117e1da-34d3-4ed7-aa2e-de8f9f67bf92.png

但是在WebViewJavaScriptBridge_JS文件夹中没有removeHandler方法,于是新增里以下JS

window.GaiaWebViewJavascriptBridge 里添加removeHandler

    window.GaiaWebViewJavascriptBridge = {
        registerHandler: registerHandler,
        callHandler: callHandler,
        disableJavscriptAlertBoxSafetyTimeout: disableJavscriptAlertBoxSafetyTimeout,
        _fetchQueue: _fetchQueue,
        _handleMessageFromObjC: _handleMessageFromObjC,
        removeHandler: removeHandler,
    };

messageHandlers是默认处理函数,当JS调用OC方法时,根据方法名称找到不同的OC的block,或通过send()方法调用OC时,调用该默认messageHandlers。
所以实现removeHandler方法,只需要将messageHandlers对应的键值对删除即可。
实现removeHandler方法

    function removeHandler(handlerName) {
        if(messageHandlers[handlerName]){
           delete messageHandlers[handlerName];
        }
    }

扩展:
WebViewJavaScriptBridge是一个轻量的OC与JS桥接机制,主要包含三个类,JS端window.WebViewJavascriptBridge,OC端WebViewJavascriptBridge和WebViewJavascriptBridgeBase。桥接类支持JS调用OC方法,OC调用JS方法。
JS调用OC通过重定向URL并获取HandlerName来调用,OC调用JS通过stringByEvaluatingJavaScriptFromString调用。
参考网上资料:https://blog.csdn.net/panfeng200866/article/details/60591015

上一篇下一篇

猜你喜欢

热点阅读