Код: Выделить всё
document.documentElement.outerHTML
< /code>
Пакеты попробовали: < /p>
[list]
[*]webview_flutter[/list]
проблема : запуск вышеуказанного JavaScript отстает от пользовательского интерфейса. Для JavaScript требуется около 15-20 секунд, чтобы вернуть свой результат. В то же время XCODE показывает> 100% использование ЦП. Я точно не понимаю, почему?!
Веб-страница, используемая в веб-просмотре, https://en.wikipedia.org/wiki/hello_(adele_song)образно PrettyPrint-Override "> class HtmlPreviewView extends StatelessWidget {
const HtmlPreviewView({super.key});
@override
Widget build(BuildContext context) {
final wv = WebViewController();
Future.delayed(const Duration(seconds: 5), () {
wv.runJavaScriptReturningResult('''document.documentElement.outerHTML.toString()''').then((result) {
print(result.toString());
});
});
WebViewWidget(
controller: wv
..setJavaScriptMode(JavaScriptMode.unrestricted)
..loadRequest(
WebUri('https://en.wikipedia.org/wiki/Hello_(Adele_song)'),
),
);
}
}
код для воспроизведения проблемы с Flutter_inappwebview :
class HtmlPreviewView extends StatelessWidget {
const HtmlPreviewView({super.key});
/// JavaScript code to get the HTML content of the page
String get getHtmlContentScript => '''
(function() {
const htmlContent = document.documentElement.outerHTML;
window.flutter_inappwebview.callHandler('onHtmlContent', htmlContent);
})();
''';
@override
Widget build(BuildContext context) {
return InAppWebView(
initialUrlRequest: 'https://en.wikipedia.org/wiki/Hello_(Adele_song)',
initialSettings: InAppWebViewSettings(
javaScriptEnabled: true,
isInspectable: true,
),
initialUserScripts: UnmodifiableListView([
UserScript(
source: linkLongPressScript,
injectionTime: UserScriptInjectionTime.AT_DOCUMENT_END,
),
]),
onWebViewCreated: (controller) {
state.setWebViewController(controller);
controller.addJavaScriptHandler(
handlerName: 'onHtmlContent',
callback: (args) {
String htmlContent = args[0];
print(htmlContent);
},
);
}
);
}
}
< /code>
Код для воспроизведения идеальной производительности IOS: < /p>
import SwiftUI
import WebKit
struct ContentView: View {
var body: some View {
WebView(urlString: "https://en.wikipedia.org/wiki/Hello_(Adele_song)")
.edgesIgnoringSafeArea(.all)
}
}
struct WebView: UIViewRepresentable {
let urlString: String
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
webView.navigationDelegate = context.coordinator
if let url = URL(string: urlString) {
webView.load(URLRequest(url: url))
}
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) {}
func makeCoordinator() -> Coordinator {
Coordinator()
}
class Coordinator: NSObject, WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.documentElement.outerHTML.toString()") { (html, error) in
if let htmlString = html as? String {
print("HTML Source Code:\n\(htmlString)")
} else if let error = error {
print("Error fetching HTML: \(error.localizedDescription)")
}
}
}
}
}
#Preview {
ContentView()
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ebview-ios
Мобильная версия