admin
2022-09-04 fa05f89529e05078b29606e4beda3de5cfdce485
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
//
//  BUJSInjector.h
//  BURexxar
//
//  Created by muhuai on 2017/6/17.
//  Copyright © 2017年 muhuai. All rights reserved.
//
 
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
 
@protocol BUWebView;
/**
 BUWebView的JS注入器
 当页面加载完成后, 注入器会向WebView容器里注入一段JS脚本.
 
 使用场景:
 容器是其他人提供的, 但是你需要往里面注入一些脚本.
 
 有两个级别:
 1. webview级别, 只对当前webview生效. BUWebView.injector
 2. 全局级别, 对所有webview生效. [BUJSInjector sharedInstance]
 
 请自行根据需求使用, 不要滥用全局级别
 
 */
 
@interface BUJSInjector : NSObject
 
/**
 全局级别的注入器.
 需评估影响范围, 慎用
 
 @return 注入器
 */
+ (instancetype)sharedInstance;
 
/**
 对匹配正则的页面注入脚本
 非线程安全
 
 @param script 脚本
 @param regex 正则表达式
 @param key 该条规则的key, 用于remove和 检验规则唯一性
 @note 如果有多条规则成功匹配, 则会注入多段JS脚本
       多段注入会按照注册先后顺序, 并且web级别 > 全局级别
 */
- (void)addInjectRuleWithScript:(NSString *)script regex:(NSString *)regex key:(NSString *)key;
 
/**
 移除指定规则
 非线程安全
 
 @param key 规则的key
 */
- (void)removeScriptWithKey:(NSString *)key;
 
/**
 移除全部规则.
 非线程安全
 
 慎用..小心被人打...
 */
- (void)removeAllScript;
 
/**
 对webview注入 符合规则的脚本
 
 @param webview BUWebView
 */
- (void)injectScriptInWebView:(UIView<BUWebView> *)webview;
@end