首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webview_flutter目标_blank不工作

webview_flutter是一种用于在移动应用中显示网页内容的Flutter插件。它提供了一个WebView小部件,允许开发人员在移动应用中嵌入网页。在WebView中打开链接时,通常会遇到目标_blank不起作用的问题。

目标_blank是HTML中的一个属性,用于指定链接在新标签页或新窗口中打开。然而,对于webview_flutter插件,默认情况下,它不支持在新标签页或新窗口中打开链接。这是因为webview_flutter插件在内部使用的是原生WebView组件,而原生WebView在默认情况下也不支持在新标签页或新窗口中打开链接。

为了解决这个问题,开发人员可以通过自定义代码来实现在WebView中打开链接的功能。一种常用的方法是使用JavaScript来捕获网页中的链接点击事件,并通过与Flutter的通信来请求在新标签页或新窗口中打开链接。下面是一个示例代码:

代码语言:txt
复制
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter/platform_interface.dart';

class MyWebView extends StatefulWidget {
  @override
  _MyWebViewState createState() => _MyWebViewState();
}

class _MyWebViewState extends State<MyWebView> {
  WebViewPlatformController? _controller;

  @override
  Widget build(BuildContext context) {
    return WebView(
      initialUrl: 'https://example.com',
      javascriptMode: JavascriptMode.unrestricted,
      onWebViewCreated: (controller) {
        _controller = controller;
        _controller?.loadUrl('https://example.com');
      },
      navigationDelegate: (NavigationRequest request) {
        if (request.url != 'https://example.com') {
          // 打开新的标签页
          _controller?.evaluateJavascript('window.open("${request.url}","_blank");');
          return NavigationDecision.prevent;
        }
        return NavigationDecision.navigate;
      },
    );
  }
}

在上述代码中,我们通过设置navigationDelegate来拦截WebView中的导航请求。当检测到有链接将要在新标签页或新窗口中打开时,我们使用JavaScript的window.open方法来请求在新标签页中打开该链接。

关于webview_flutter插件的更多信息和使用方法,您可以查阅腾讯云文档中关于Flutter插件的介绍:webview_flutter插件介绍

请注意,以上提供的解决方案是基于webview_flutter插件的一种实现方式,具体的实现可能因应用需求和具体场景而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券