当前位置: 首页 > news >正文

iOS WKWebView 禁止选中文字

0x00 方法一

通过 JavaScript 注入来实现:

NSString *js = @"document.body.style.userSelect = 'none'; document.body.style.webkitUserSelect = 'none';";
WKUserContentController *ctrl = [[WKUserContentController alloc] init];
WKUserScript *script = [[WKUserScript alloc] initWithSource:js injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
[ctrl addUserScript:script];WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.userContentController = ctrl;WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];
webView.scrollView.minimumZoomScale = 1.0;
webView.scrollView.maximumZoomScale = 1.0;

0x01 方法二

在加载完成后,注入 JS 代码

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {// 注入JavaScript代码来禁用文字选择let script = """document.body.style.webkitUserSelect = 'none';document.body.style.userSelect = 'none';"""webView.evaluateJavaScript(script, completionHandler: nil)}

0x03

重写 WKWebView 的 canPerformAction 方法来禁用文字选择和上下文菜单

class NoSelectWebView: WKWebView {override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {// 禁用文字选择和上下文菜单if action == #selector(UIResponderStandardEditActions.copy(_:)) ||action == #selector(UIResponderStandardEditActions.select(_:)) ||action == #selector(UIResponderStandardEditActions.selectAll(_:)) {return false}return super.canPerformAction(action, withSender: sender)}
}


http://www.mrgr.cn/news/10452.html

相关文章:

  • 解决前端访问IIS服务器发生跨域请求报错的方法
  • 乾坤大挪移--将一个混乱的excel分类整理的辅助VBA代码
  • 基于Python的机器学习系列(10):朴素贝叶斯 - 多项式模型
  • 【机器学习】决策树------迅速了其基本思想,Sklearn的决策树API及构建决策树的步骤!!!
  • 低代码革命:JNPF平台如何简化企业应用开发
  • CSS实现鼠标hover展开菜单
  • 【Unity基础】Unity通信之SendMessage
  • 串口和RS485通信
  • 2024Android面试题与答案(1)
  • Shader 中的渲染顺序
  • 数学基础 -- 线性代数之增广矩阵
  • 快速排序与其例题
  • stm32智能颜色送餐小车(红外光管避障)
  • python如何调用另一个文件中的函数
  • 使用kafka改造分布式事务
  • 一文搞定MybatisPlus
  • asio之task_io_service多线程
  • [Linux]如何在虚拟机安装Ubuntu?(小白向)
  • Java获取List实体交集差集
  • docker inspect输出内容详解,推测容器运行命令