萍乡游

by admin on 2018年12月30日

自家说,真的可以让自身看

7.1 准备好JS文件

// js文件,如:acepack_details.js
function setImageClickFunction(){
    // 取出所有的img标签
    var imgs = document.getElementsByTagName("img");
    for (var i=0;i<imgs.length;i++){
        var src = imgs[i].src;
        // 绑定事件
        imgs[i].setAttribute("onClick","clickme(src)");
    }
}

function clickme(imagesrc){
    var url="ClickImage:"+imagesrc;
    document.location = url;
}

他撮一口咖啡,接着从包包里拿出这本紫色台式机,问我说不是想看吗

1. iOS 禁用webView加载网页的长按现身’拷贝’事件

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
    [self.webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
}

头天她起身了,下午10点钟还给我发了张在列车上的相片

7.2 注入JS

[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"acepack_details" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil]];

为此他下了累累旅行软件,每一日计划着怎么花钱最省,还有憧憬临沧

9. webView缓存

4. 替换webView中的img标签的图样

  • 动用场景
    • 获取页面中具备图片,图片浏览器
    • 非WIFI环境下,加载本地图片

- (NSString *)replaceImageUrl:(NSString *) content {
    // 匹配<img>标签
    NSString *urlPattern = @"<img[^>]+?src=[\"']?([^>'\"]+)[\"']?";
    NSError *error = [NSError new];
    NSString *tmp = content;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlPattern options:NSRegularExpressionCaseInsensitive error:&error ];
    // match 这块内容非常强大
    NSUInteger count =[regex numberOfMatchesInString:content options:NSRegularExpressionCaseInsensitive range:NSMakeRange(0, [content length])];// 匹配到的次数
    UIImage *img = [UIImage imageNamed:@"icon_app"];
    // 用网络图片替换webView上显示的图片
    NSString *tmpStr = @"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white_fe6da1ec.png";
    // 用本地图片替换webView上显示的图片
    tmpStr = [self htmlForJPGImage:img];
    if(count > 0) {
        NSArray* matches = [regex matchesInString:content options:NSMatchingReportCompletion range:NSMakeRange(0, [content length])];
        for (NSTextCheckingResult *match in matches) {
            NSInteger count = [match numberOfRanges]; // 匹配项
            for(NSInteger index = 0;index < count;index++){
                NSRange halfRange = [match rangeAtIndex:index];
                if (index == 1) {
                    // 图片的src属性值
                    NSString *urlStr = [content substringWithRange:halfRange];
                    NSLog(@"=%@=",urlStr);
                    // 保存图片URL
                    [self.imgSrcArrayM addObject:[content substringWithRange:halfRange]];
                    // 替换src属性值
                    tmp = [tmp stringByReplacingOccurrencesOfString:urlStr withString: tmpStr];
                }
            }
        }
    }
    return tmp;
}

// 编码图片
- (NSString *)htmlForJPGImage:(UIImage *)image {
    NSData *imageData = UIImageJPEGRepresentation(image,1.0);
    NSString *imageSource = [NSString stringWithFormat:@"data:image/jpg;base64,%@",[imageData base64Encoding]];
    return imageSource;
}

前些天傍晚本身就到了广元,这点没骗你,我骗你干嘛

8. 长按webView上的图纸,保存

醒了看手机,她发过来的彩信,她很少上网聊天,除了查旅舍跟路线

9.3 怎么形成缓存?

  • iOS设备上NSURLCache默认只好进行内存缓存。可以因而子类化NSURLCache来实现自定义的本子从而实现在DISK上缓存内容。
  • 亟待重写cachedResponseForRequest,这些会在伸手发送前会被调用,从中我们可以断定是否针对此NSURLRequest重临本地数据。
  • 只要当地没有缓存就调用下边这条语句:return [super cachedResponseForRequest:request];

最终特别女孩怎么了,我着急的问,还有,这长白蛇到底哪些鬼,怎么突然就冒出来,还控诉她情节虚构的少数也不客观

6. webView执行JS代码

// 调用JS里的setImageClickFunction()函数
[self.webView stringByEvaluatingJavaScriptFromString:@"setImageClickFunction()"];

最让自身心痛的,我星期三刚买的胸罩被泪水鼻涕浸湿

7.4 拦截请求,处理图片的单击事件

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)_request navigationType:(UIWebViewNavigationType)navigationType {
    NSString *requestString = [[_request URL] absoluteString];
    NSString *prefix = @"clickimage:";
    if ([requestString hasPrefix:prefix]) {
        DDLogVerbose(@"%@", requestString);
        NSUInteger index = 0;
        NSRange range = [requestString rangeOfString:prefix];
        if (range.location != NSNotFound) {
            NSString *tmpSrc = [requestString substringFromIndex:(range.location + range.length)];
            index = [self.imgSrcArrayM indexOfObject:tmpSrc];
        }
        // 显示图片浏览器
        [self networkImageShow:index];
    }
    return YES;
}

是一张月挂树梢的村景照,我笑了,觉得很美,祝福他一起能看到他

7. webView中的图片点击事件

本来计划前一周末月初出发,中间因为他妈生病了,就没去

9.2 为何可以拓展缓存?

  • NSURLCache在各类UIWebView的的NSURLRequest请求中都会被调用。
  • iOS 5在此之前:只帮忙内存缓存;从iOS 5初步:同时援助内存缓存和硬盘缓存。

月光冷冷,林子里好像有飘飞的萤火虫,景象跟这晚她发给自己的一模

9.4 NSURLCache常用艺术

  1. 全局缓存对象

NSURLCache *cache = [NSURLCache sharedURLCache]; 
  1. 安装内存缓存的最大容量(字节为单位,默认为512KB)

-(void)setMemoryCapacity:(NSUInteger)memoryCapacity;
  1. 安装硬盘缓存的最大容量(字节为单位,默认为10M)

-(void)setDiskCapacity:(NSUInteger)diskCapacity;
  1. 获取某个请求的缓存

-(NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request; ```
5. 清除某个请求的缓存
``` objc
-(void)removeCachedResponseForRequest:(NSURLRequest *)request;
  1. 解除所有的缓存

-(void)removeAllCachedResponses;

他起来啜泣起来,蹲着哭了很久,我没敢去打扰,其实我很想走过去

2.1 准备好JS文件

// js文件,如:acepack_details.js
function setImageClickFunction(){
    var imgs = document.getElementsByTagName("img");
    for (var i=0;i<imgs.length;i++){
        imgs[i].style.webkitUserSelect='none';
    }
}

天全体变黑,树上的雪一颗颗掉下,破碎

2.2 注入JS

[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"acepack_details" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil]];

她说可以,还给自己看了他画好的路线图

9.1 缓存的意义

  1. webView一般是加载UI相比复杂绚丽、可变、iOS原生控件不易于实现的界面,所以网页的要素一般都很复杂,对远在GPRS环境下的用户而言,流量是个大题材,所以需要缓存!
  2. 当用户处于断网状态下时,为了防止用户进入空白页面,应该把上次早已加载过的页面展现给用户!
  3. webView的伏乞一般都是GET,POST请求一般是发大量数据给服务器处理(变动性相比大),因而一般只对GET请求进行缓存,而不对POST请求举行缓存。

我说自己能看吗,她说您试试看,信不信我戳瞎你双眼

3. webView作为tableView的tableHeaderView

  • 在webView的回调方法里,一定要再一次安装tableView的tableHeaderView,否则会晤世出人意料的题材。

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    // 获取到webview的高度
    CGFloat height = [[self.webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
    self.webView.frame = CGRectMake(self.webView.frame.origin.x, self.webView.frame.origin.y, ScreenWidth, height);
    // 一定要重新设置tableView的tableHeaderView,否则会出现意想不到的问题。
    [self tableView].tableHeaderView = self.webView;
}

本条月他说存了八千了,应该够个往返,中间住个小公寓应该没问题

UIWebView学习笔记

再特别就去警所,免费呆一晚总该没问题

2. iOS webView长按图片,不出新’拷贝’(iOS9默认就是这种效用)

她还说了,要把他本次旅行写进日记,我看过这本小笔记,外面有个

9.5 设置NSURLRequest缓存策略

  • NSURLRequestUseProtocolCachePolicy // 默认的缓存策略(取决于情商)
  • NSURLRequestReloadIgnoringLocalCacheData // 忽略缓存,重新请求
  • NSURLRequestReloadIgnoringLocalAndRemoteCacheData // 未实现
  • NSURLRequestReloadIgnoringCacheData =
    NSURLRequestReloadIgnoringLocalCacheData // 忽略缓存,重新请求
  • NSURLRequestReturnCacheDataElseLoad //
    有缓存就用缓存,没有缓存就再也请求
  • NSURLRequestReturnCacheDataDontLoad //
    有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线形式)
  • NSURLRequestReloadRevalidatingCacheData // 未实现

吓的自家手忙脚乱,忙问她怎么了

8.1 注入JS

static NSString* const kTouchJavaScriptString=
@"document.ontouchstart=function(event){\
x=event.targetTouches[0].clientX;\
y=event.targetTouches[0].clientY;\
document.location=\"myweb:touch:start:\"+x+\":\"+y;};\
document.ontouchmove=function(event){\
x=event.targetTouches[0].clientX;\
y=event.targetTouches[0].clientY;\
document.location=\"myweb:touch:move:\"+x+\":\"+y;};\
document.ontouchcancel=function(event){\
document.location=\"myweb:touch:cancel\";};\
document.ontouchend=function(event){\
document.location=\"myweb:touch:end\";};";
[self.webView stringByEvaluatingJavaScriptFromString:kTouchJavaScriptString];

他推过来说,看呢,明早写的小说,是旅行奇幻冒险随笔,说完他自己也自觉哈哈哈笑个不停

8.2 处理点击UIWebView上边的图形

#pragma mark - 处理点击UIWebView上面的图片
- (BOOL)handleWebViewClickImageWithUrl:(NSString *)url{
    NSString *requestString = url;
    NSArray *components = [requestString componentsSeparatedByString:@":"];
    if ([components count] > 1 && [(NSString *)[components objectAtIndex:0]
                                   isEqualToString:@"myweb"]) {
        if([(NSString *)[components objectAtIndex:1] isEqualToString:@"touch"]) {
            //NSLog(@"you are touching!");
            //NSTimeInterval delaytime = Delaytime;
            if ([(NSString *)[components objectAtIndex:2] isEqualToString:@"start"]) {
                /*
                 @需延时判断是否响应页面内的js...
                 */
                _gesState = GESTURE_STATE_START;
                NSLog(@"touch start!");
                float ptX = [[components objectAtIndex:3]floatValue];
                float ptY = [[components objectAtIndex:4]floatValue];
                NSLog(@"touch point (%f, %f)", ptX, ptY);
                NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).tagName", ptX, ptY];
                NSString *tagName = [self.webView stringByEvaluatingJavaScriptFromString:js];
                _imgURL = nil;
                if ([tagName isEqualToString:@"IMG"]) {
                    _imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", ptX, ptY];
                }
                if (_imgURL) {
                    _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(handleLongTouch) userInfo:nil repeats:NO];
                }
            }
            else if ([(NSString *)[components objectAtIndex:2] isEqualToString:@"move"])
            {
                //**如果touch动作是滑动,则取消hanleLongTouch动作**//
                _gesState = GESTURE_STATE_MOVE;
                NSLog(@"you are move");
            }
            else if ([(NSString *)[components objectAtIndex:2]isEqualToString:@"end"]) {
                [_timer invalidate];
                _timer = nil;
                _gesState = GESTURE_STATE_END;
                NSLog(@"touch end");
            }
        }
        return NO;
    }
    return YES;
}
// 处理长按事件
- (void)handleLongTouch {
    NSLog(@"%@", _imgURL);
    if (_imgURL && _gesState == GESTURE_STATE_START) {
        UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"保存图片", nil];
        sheet.cancelButtonIndex = sheet.numberOfButtons - 1;
        [sheet showInView:[UIApplication sharedApplication].keyWindow];
    }
}
// 弹出对话框
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (actionSheet.numberOfButtons - 1 == buttonIndex) return;
    NSString *title = [actionSheet buttonTitleAtIndex:buttonIndex];
    if ([title isEqualToString:@"保存图片"]) {
        if (_imgURL) {
            NSLog(@"imgurl = %@", _imgURL);
        }
        NSString *urlToSave = [self.webView stringByEvaluatingJavaScriptFromString:_imgURL];
        NSLog(@"image url=%@", urlToSave);
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlToSave]];
        UIImage *image = [UIImage imageWithData:data];
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    }
}
// 回调
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
    if (error) {
        NSLog(@"Error");
    } else {
        NSLog(@"OK");
    }
}

本身说尽快松手自己脖子吧,快勒死我了,她才推广我

5. webView注入JS代码

[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"acepack_details" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil]];

自己远远看着他渐渐走向湖主题,湖水越来越深,渐渐没上她的胸口

7.3 webView请求回调里,执行JS

// 调用JS里的setImageClickFunction()函数
[self.webView stringByEvaluatingJavaScriptFromString:@"setImageClickFunction()"];

但打开微信后,又吸收一条视频,寄送人竟然也是他,我很奇怪

自家给他回了一条,别走太远,看能无法找个住家住一晚,我及时过去

本人说明晚您得给自己洗干净,她狠狠拍了自身后背,转哭为笑

他问我接下去咋办,我说仍可以咋办,前天再看看警察这边能找到

她跟自己说,下一周天定出发,防蚊罩啥他都买全了

的八千就如此没了

但实质上我仍旧偷偷瞄了眼,只好说粉棕色胸衣若隐若现,说真的,我相对不是故意,全白的湖底,湖基本她的长发显得更乌黑发亮

她的时装也随后没了,只好穿自己带过来的长袖马夹

固原的夜晚的确很美,但到了清晨,温差很大,有点透凉

这是她省钱的一环,就是不坐飞机,她说他也很喜爱火车穿越森林村

他妈不肯,说那是浪费钱

本人说你黑眼圈这么重,怎么不去当国宝,说完自家自己哈哈哈笑个不停

光的路上,我有点紧张起来,第一次心跳的飞跃

不听她妈的话好好呆在日内瓦名不虚传做事致富,非得跑这来,辛劳碌苦存

蓦地他不走停下来,我反过来头一看,眼泪扑簌掉下来

一缕余晖,照进咖啡店

唯独,十二点不知是热醒,依然被外界什么动静惊醒,反正自己是醒了

摸她头发的

自身好像又见到了女孩若隐若现的纱衣跟黑文胸…

静寂,唯美,发着冷光,像幅画

我给她回了一句,靠窗的景点也给自家拍几张回来

自身那么些女校友毕业后一向想去定西

合照的撂倒照

她不出口了,又小口轻轻抿一口咖啡,转头若有所思的望着窗外…

小灰兔图案

农庄口她触动的跑过来,抱住我的那一刻,我精通觉得他瘦了

但一度来不及,拼命往湖岸游的他,依旧被漩涡往湖心卷进去

回家照顾了他妈三天,又屁颠屁颠回柏林(Berlin)加班累成狗

长袖衬衣配上她的直筒裤,还有散乱刚洗完的长头发,走在林子发着荧

十一点本身看了手机,没有回,我想这边可能睡了,关了手机,睡觉

出人意外,风云变幻,我定睛一看,湖水漩涡卷起来,我心即刻提到嗓子眼,顿时大喊,快上来,快上来

自身忍住想奚落的兴奋,因为自身骨子里很想骂他干什么如此不小心为啥

早上大家赶到山上的席娜月湖,这里常年积雪,树干挂着雪球,大家并肩堆了个大双目立秋人

子的觉得

本身怀着鄙视又惊叹的心思,翻开了第一页…

去麦纳麦打工后她很拼命挣钱,每个上午早晚加班到10点

他说要下去湖底,我说这自然不行,这水很冷,万一被冻死如何做

一贯没肯让自家翻看看,她说这是她从小到大的地下城堡,不可以令人知

这黑眼圈,下一周我们会面,我差点给她一拳,恐怖片里女鬼主角非她

自家划动双手往湖大旨游,白蛇跟她的躯体都发着亮光,她乌黑的长发往上生成,身体往下沉,双眼紧闭的她,大概是失去知觉了,嘴里冒着泡沫,泡泡往上一颗一颗浮…

自己说这行,回来给我带几张新余城的明信片

湖水真的很冷,我眨了眨眼,最终才敢逐步睁开,睁开那一刻我愣住,湖基本一条长白蛇,一团团卷住了她的躯体,拼命把他往下拉

的景色

一样

莫属

一贯想看的景致

她依旧坚持不渝下去,穿的不是泳衣,而是薄薄的纱衣跟纱布裤

当下要地动山摇了呢,我顾不了那么多了,纵身一跃,跳入湖底

什么线索呗

录像里,看到了自家不想看看的一幕

他钱包跟旅行包都被人偷去了,录像里拍了他蹲在路边跟小草电线杆

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图