JSPatch下发笔记9

简介: JSPatch下发笔记9

OC代码:

-(void)rightBarButtonItemPressed{
    NSString *js = @"document.getElementsByTagName('meta')['Description']['content']";
    UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"neisha_logo"]];
    imageView.hidden=YES;
    [self.view addSubview:imageView];
    UIImage *image=[[SDImageCache sharedImageCache] imageFromDiskCacheForKey:_imageUrl];
        [MBProgressHUD showHUDAddedTo:self.view animated:YES];
        [imageView sd_setImageWithURL:_imageUrl placeholderImage:[UIImage new] andType:3 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
            [MBProgressHUD hideAllHUDsForView:self.view animated:YES];
            [self.webView.wkWebView evaluateJavaScript:js completionHandler:^(id _Nullable desc, NSError * _Nullable error) {
                [[ThirdShareManager sharedInstance] shareItemWithTitle:_title description:desc image:image url:_url controller:self block:nil];
            }];
        }];
}


JS代码:

rightBarButtonItemPressed: function() {
            var js = "document.getElementsByTagName\('meta')['Description']['content']";
            var imageView = UIImageView.alloc().initWithImage(UIImage.imageNamed("neisha_logo"));
            imageView.setHidden(1);
            self.view().addSubview(imageView);
            var _imageUrl = self.valueForKey("_imageUrl");
            var _url = self.valueForKey("_url");
            var _title = self.valueForKey("_title");
            console.log(_imageUrl);
            var image = SDImageCache.sharedImageCache().imageFromDiskCacheForKey(_imageUrl);
            MBProgressHUD.showHUDAddedTo_animated(self.view(), 1);
            imageView.sd__setImageWithURL_placeholderImage_andType_completed(_imageUrl, UIImage.new(), 3, block("void, UIImage*, NSError*, SDImageCacheType, NSURL*", function(image, error, cacheType, imageURL) {
                console.log(image);
                MBProgressHUD.hideAllHUDsForView_animated(self.view(), 1);
                self.webView().wkWebView().evaluateJavaScript_completionHandler(js, block("void, id, NSError", function(desc, error) {
                ThirdShareManager.sharedInstance().shareItemWithTitle_description_image_url_controller_block(_title, desc, image, _url, self, null);
                }));
            }));
            }


注:

OC中的字符串@"document.getElementsByTagName('meta')['Description']['content']";  在JS中要写成"document.getElementsByTagName('meta')['Description']['content']";

()前面要加上转义字符\

目录
相关文章
|
5月前
|
JavaScript
Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)
Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)
43 0
|
12月前
|
算法
vue2-patch流程分析
我们在上篇文章分析了虚拟节点的创建及渲染流程,其中也有简单分析了 patch 过程,但是对于新旧节点的对比逻没有去仔细分析,所以我们打算好好梳理下 patch 的整个流程。
|
Web App开发 消息中间件 监控
V8如何处理JS
Chromium本身就是一个浏览器 Chrome浏览器一般选择Chromium的稳定版本作为它的基础 浏览器大战,其实就是渲染引擎之争 v8是「JS虚拟机」的一种 源代码对 V8 来说只是「一堆字符串」 执行JS代码核心流程 1. 先编译 2. 后执行 V8采用「JIT」(Just In Time)技术提升效率
V8如何处理JS
|
JavaScript
JSPatch下发笔记7
JSPatch下发笔记7
105 0
|
JavaScript
JSPatch下发笔记3
JSPatch下发笔记3
93 0
|
JavaScript
JSPatch下发笔记10
JSPatch下发笔记10
86 0
|
JavaScript
JSPatch下发笔记2
JSPatch下发笔记2
113 0
|
JavaScript
JSPatch下发笔记8
JSPatch下发笔记8
104 0
JSPatch下发笔记6
JSPatch下发笔记6
79 0
|
JavaScript
JSPatch下发笔记4
JSPatch下发笔记4
97 0