Skip to content

使用flutter_inappwebview组件,无法选中文本 #729

@kulaiyin

Description

@kulaiyin

Affected version

0.16.3

No same issues found

  • Yes, I search all issues but not found.

Bug type

Others

Which frontend framework you are using.

vue3.x

Steps to reproduce

  1. 新建一个elenemt组件
  2. 使用webf加载html
  3. webview显示内容无法选中

Code example

html内容

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    html, body {
      width: 100%;
      height: 100%;
    }
    .root {
      width: 100%;
      height: 100%;
      overflow-y: auto;
      background-image: linear-gradient(to bottom, white, red);
    }
    #webview {
      padding-bottom: 50px;
      background-color: orange;
    }
  </style>
</head>
<body>
    <div id="webview">
      <flu-simple-web style="height: 500px; " src="https://flutter.cn/">
      </flu-simple-web>
  </div>
</body>
</html>

flu-simple-web 组件适配

import 'package:flutter/widgets.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:webf/webf.dart';
import 'package:webview_flutter/webview_flutter.dart';

class SimpleWebview extends StatelessWidget {
  final String url;

  const SimpleWebview({super.key, required this.url});

  @override
  Widget build(BuildContext context) {
    return InAppWebView(
        initialSettings: InAppWebViewSettings(overScrollMode: OverScrollMode.IF_CONTENT_SCROLLS),
        initialUrlRequest: URLRequest(url: WebUri(url)));
  }
}

class SimpleWebviewElement extends WidgetElement {
  SimpleWebviewElement(super.context);

  String get src => getAttribute('src') ?? "";
  bool use_webview_flutter = false;
  WebViewController? controller;

  @override
  String get tagName => "simple-webview-element";

  @override
  initState() {
    super.initState();
    if (use_webview_flutter) {
      controller = WebViewController()
        ..setJavaScriptMode(JavaScriptMode.unrestricted)
        ..setBackgroundColor(const Color(0xFFFFFFFF))
        ..setNavigationDelegate(NavigationDelegate(
          onProgress: (int progress) {
            // Update loading bar.
          },
          onPageStarted: (String url) {},
          onPageFinished: (String url) {},
        ))
        ..loadRequest(Uri.parse(src));
    }
  }

  Widget _build_webview() {
    if (use_webview_flutter) {
      return WebViewWidget(controller: controller!);
    }
    return SimpleWebview(url: src);
  }

  @override
  Widget build(BuildContext context, List<Widget> children) {
    return _build_webview();
  }
}

Expected results

使用webf加载的webview内文本可以选中,复制

Actual results

webf加载的webview页面内容无法选中,复制;不使用webf加载webview的页面是可以正常选中复制的

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions