forked from sinuos-zz/shadowsocks-iOS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSWBWebView.m
More file actions
121 lines (103 loc) · 3.71 KB
/
SWBWebView.m
File metadata and controls
121 lines (103 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//
// SWBWebView.m
// AquaWeb
//
// Created by clowwindy on 11-6-16.
// Copyright 2011年 __MyCompanyName__. All rights reserved.
//
#import "SWBWebView.h"
#import <QuartzCore/QuartzCore.h>
@implementation SWBWebView
//+(Class)layerClass {
// return [CATiledLayer class];
//}
//-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//
//}
//
//- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// UITouch *theTouch = [touches anyObject];
// if ([theTouch tapCount] == 2) {
// [self becomeFirstResponder];
// UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Change Color" action:@selector(changeColor:)];
// UIMenuController *menuCont = [UIMenuController sharedMenuController];
// [menuCont setTargetRect:self.frame inView:self.superview];
// menuCont.arrowDirection = UIMenuControllerArrowLeft;
// menuCont.menuItems = [NSArray arrayWithObject:menuItem];
// [menuCont setMenuVisible:YES animated:YES];
// }
// [super touchesEnded:touches withEvent:event];
//}
//- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {}
- (BOOL)canBecomeFirstResponder { return YES; }
- (void)changeColor:(id)sender {
// if ([self.viewColor isEqual:[UIColor blackColor]]) {
// self.viewColor = [UIColor redColor];
// } else {
// self.viewColor = [UIColor blackColor];
// }
[self setNeedsDisplay];
}
- (CGSize)windowSize
{
CGSize size;
size.width = [[self stringByEvaluatingJavaScriptFromString:@"window.innerWidth"] integerValue];
size.height = [[self stringByEvaluatingJavaScriptFromString:@"window.innerHeight"] integerValue];
return size;
}
- (CGPoint)scrollOffset
{
CGPoint pt;
pt.x = [[self stringByEvaluatingJavaScriptFromString:@"window.pageXOffset"] integerValue];
pt.y = [[self stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] integerValue];
return pt;
}
-(NSString *)lastClickedLink {
NSString *urlString = [self stringByEvaluatingJavaScriptFromString:@"AquaWebGetLastLink()"];
if ([NSURL URLWithString:urlString] == nil) {
return [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
} else {
return urlString;
}
}
-(NSString *)lastClickedLinkText {
NSString *urlString = [self stringByEvaluatingJavaScriptFromString:@"AquaWebGetLastLinkText()"];
return urlString;
}
-(NSString *)lastImageSrc {
NSString *urlString = [self stringByEvaluatingJavaScriptFromString:@"AquaWebGetLastImageSrc()"];
if ([NSURL URLWithString:urlString] == nil) {
return [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
} else {
return urlString;
}
}
-(void)openLastClickedLink {
[self stringByEvaluatingJavaScriptFromString:@"AquaWebOpenLastLink()"];
}
-(NSString *)locationHref {
NSString *urlString = [self stringByEvaluatingJavaScriptFromString:@"window.location.href"];
if ([NSURL URLWithString:urlString] == nil) {
return [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
} else {
return urlString;
}
}
-(NSString *)pageTitle {
return [self stringByEvaluatingJavaScriptFromString:@"document.title"];
}
-(NSString *)selection {
NSString *selection = [self stringByEvaluatingJavaScriptFromString:@"if(window.getSelection()){window.getSelection().toString()}else{""}"];
return selection;
}
-(UIScrollView *)scrollView {
for (UIView *view in self.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
UIScrollView *scrollView = (UIScrollView *)view;
return scrollView;
}
}
NSLog(@"scrollView not found in webView");
return nil;
}
@end