cefsharp 84.4.10 如何在js中暴露c#类

从cefsharp79版本开始,旧的RegisterJsObject方法被删除了。
也就是说想使用79以后的版本,就必须更新js暴露c#对象的方法了。话不多说直接上代码:

BindingOptions bindingOption = new BindingOptions { 
CamelCaseJavascriptNames = false, 
Binder = BindingOptions.DefaultBinder.Binder };

CWBrowser.JavascriptObjectRepository.Register("cefCardReader", new CefCardReader(), false);

首先在创建了ChromiumWebBrowser实例之后,要注册对象,这一步和之前没什么大的变化,只是注册方法改了一下。但是如果你以为这样注册一下就能和之前一样使用那你就太天真了。
现在你注册之后,要想在js中使用cefCardReader中的方法,在使用之前你需要这样:

CefSharp.BindObjectAsync('cefCardReader');
cefCardReader.add();

我为了省掉这一步我会在Frame加载完成之后,这样做:

		/// <summary>
        /// 加载结束事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void CWBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("(function(){")
                .Append("CefSharp.BindObjectAsync('cefCardReader');")            
                .Append("})();");
            browser.GetFocusedFrame().EvaluateScriptAsync(sb.ToString());
        }

这里面又有一个要注意的地方,这个CefSharp.BindObjectAsync在你每新开一个标签页的时候都需要重新调用一次,这就是我为什么把它放在FrameLoadEnd的中执行的原因。

最后在说一下,新注册方法的问题,由于Frame加载回调并不能保证页面的js方法都还没有执行,所以会导致一些在页面加载过程中就开始执行的js方法如果调用了cefCardReader的方法会失败。而解决方法就是在调用之前调用CefSharp.BindObjectAsync('cefCardReader');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很高兴为您服务!以下是Python程序的代码: ```python import numpy as np import cv2 import matplotlib.pyplot as plt def notchfunc(size, x, y, r): H = np.ones((size, size), np.float32) for i in range(size): for j in range(size): dist = np.sqrt((i-x)**2 + (j-y)**2) if dist <= r: H[i, j] = 0 return H #读入图像 img = cv2.imread('Fig0464(a)(car_75DPI Moire).tif', 0) #进行傅里叶变换 f = np.fft.fft2(img) #将零频率移到心位置 fshift = np.fft.fftshift(f) #计算幅度谱 magnitude_spectrum = 20*np.log(np.abs(fshift)) #找到“冲激”的坐标位置 pos = [(54.1, 43.9), (54.1, 84.4), (56.7, 164.2), (56.7, 205.6), (110.9, 40.1), (110.9, 81.0), (113.0, 161.2), (113.0, 202.6)] for p in pos: x, y = p print("坐标位置为: x={:.1f} y={:.1f}".format(x, y)) #构造陷波滤波器 size = img.shape[0] H = notchfunc(size, 43.9, 54.1, 5) * notchfunc(size, 84.4, 54.1, 5) * notchfunc(size, 164.2, 56.7, 5) * notchfunc(size, 205.6, 56.7, 5) * notchfunc(size, 40.1, 110.9, 5) * notchfunc(size, 81.0, 110.9, 5) * notchfunc(size, 161.2, 113.0, 5) * notchfunc(size, 202.6, 113.0, 5) #将陷波滤波器和幅度谱相乘 fshift_filtered = fshift * H #将零频率移到左上角位置 fshift_filtered_unshifted = np.fft.ifftshift(fshift_filtered) #进行傅里叶反变换 img_filtered = np.fft.ifft2(fshift_filtered_unshifted) #将实部取出 img_filtered = np.real(img_filtered) #显示结果 plt.subplot(121), plt.imshow(magnitude_spectrum, cmap='gray') plt.title('Original Image Spectrum'), plt.xticks([]), plt.yticks([]) plt.subplot(122), plt.imshow(img_filtered, cmap='gray') plt.title('Image after HPF'), plt.xticks([]), plt.yticks([]) plt.show() ``` 文加密技术称为“文文本加密技术”,可以使用一些古文字体或者对文文字进行一定的转换,来达到加密的目的,比如替换为汉字拼音、拆分为偏旁部首等。这种加密技术具有较好的安全性和隐蔽性,适用于文文本的加密保护。 关于lua closure factory 的完整代码,需要明确具体实现的功能和应用场景,这样才能为您提供正确的代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值