这个问题是针对 webview_flutter 插件的。(https://pub.dev/packages/webview_flutter)
我已经设法加载本地 .html 文件,但是 .js 文件和 .css 包含作为 html 代码的一部分不起作用。
这在 Native Android & Native iOS App 中运行良好。
我认为这是支持 html 视图的基本功能之一。
webview_flutter 不支持 js & css include 吗?
这个问题是针对 webview_flutter 插件的。(https://pub.dev/packages/webview_flutter)
我已经设法加载本地 .html 文件,但是 .js 文件和 .css 包含作为 html 代码的一部分不起作用。
这在 Native Android & Native iOS App 中运行良好。
我认为这是支持 html 视图的基本功能之一。
webview_flutter 不支持 js & css include 吗?
是什么让您认为它不受支持?它就像在任何浏览器中一样工作:您可以提供 JS/CSS 文件的相对或绝对路径。只是不要忘记设置javascriptMode: JavascriptMode.unrestricted
为允许执行 javascript 代码。这是我使用 JS/CSS 文件创建 HTML 页面的示例:
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:webview_flutter/webview_flutter.dart';
Future<void> _showHtml() async {
final tempDir = await getTemporaryDirectory();
final htmlPath = join(tempDir.path, 'page.html');
final cssPath = join(tempDir.path, 'css.css');
final jsPath = join(tempDir.path, 'js.js');
File(htmlPath).writeAsStringSync('<html><head><link rel = "stylesheet" type = "text/css" href = "$cssPath" /><script src="$jsPath"></script></head><body><div>Test</div></body></html>');
File(cssPath).writeAsStringSync('div {background:green;}');
File(jsPath).writeAsStringSync('document.addEventListener("DOMContentLoaded", function(){document.body.style.backgroundColor = "red"});');
setState(() {
uri = Uri(scheme: 'file', path: htmlPath);
});
}
child: uri != null ? WebView(
initialUrl: uri.toString(),
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller) => c = controller,
) : Container()