BUJSInjector.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // BUJSInjector.h
  3. // BURexxar
  4. //
  5. // Created by muhuai on 2017/6/17.
  6. // Copyright © 2017年 muhuai. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. @protocol BUWebView;
  11. /**
  12. BUWebView的JS注入器
  13. 当页面加载完成后, 注入器会向WebView容器里注入一段JS脚本.
  14. 使用场景:
  15. 容器是其他人提供的, 但是你需要往里面注入一些脚本.
  16. 有两个级别:
  17. 1. webview级别, 只对当前webview生效. BUWebView.injector
  18. 2. 全局级别, 对所有webview生效. [BUJSInjector sharedInstance]
  19. 请自行根据需求使用, 不要滥用全局级别
  20. */
  21. @interface BUJSInjector : NSObject
  22. /**
  23. 全局级别的注入器.
  24. 需评估影响范围, 慎用
  25. @return 注入器
  26. */
  27. + (instancetype)sharedInstance;
  28. /**
  29. 对匹配正则的页面注入脚本
  30. 非线程安全
  31. @param script 脚本
  32. @param regex 正则表达式
  33. @param key 该条规则的key, 用于remove和 检验规则唯一性
  34. @note 如果有多条规则成功匹配, 则会注入多段JS脚本
  35. 多段注入会按照注册先后顺序, 并且web级别 > 全局级别
  36. */
  37. - (void)addInjectRuleWithScript:(NSString *)script regex:(NSString *)regex key:(NSString *)key;
  38. /**
  39. 移除指定规则
  40. 非线程安全
  41. @param key 规则的key
  42. */
  43. - (void)removeScriptWithKey:(NSString *)key;
  44. /**
  45. 移除全部规则.
  46. 非线程安全
  47. 慎用..小心被人打...
  48. */
  49. - (void)removeAllScript;
  50. /**
  51. 对webview注入 符合规则的脚本
  52. @param webview BUWebView
  53. */
  54. - (void)injectScriptInWebView:(UIView<BUWebView> *)webview;
  55. @end