addUserScript method
Injects the specified userScript into the webpage’s content.
Officially Supported Platforms/Implementations:
- Android WebView
- iOS WKWebView (Official API - WKUserContentController.addUserScript):
- This method will throw an error if the
PlatformWebViewCreationParams.windowIdhas been set. There isn't any way to add/remove user scripts specific to window WebViews. This is a limitation of the native WebKit APIs.
- This method will throw an error if the
- Linux WPE WebKit (Official API - webkit_user_content_manager_add_script)
- macOS WKWebView (Official API - WKUserContentController.addUserScript):
- This method will throw an error if the
PlatformWebViewCreationParams.windowIdhas been set. There isn't any way to add/remove user scripts specific to window WebViews. This is a limitation of the native WebKit APIs.
- This method will throw an error if the
- Web <iframe> but requires same origin
- Windows WebView2
Parameters - Officially Supported Platforms/Implementations:
userScript: all platforms
Use the PlatformInAppWebViewController.isMethodSupported method to check if this method is supported at runtime.
Implementation
@override
Future<void> addUserScript({required UserScript userScript}) async {
assert(webviewParams?.windowId == null);
Map<String, dynamic> args = <String, dynamic>{};
args.putIfAbsent('userScript', () => userScript.toMap());
if (!(_userScripts[userScript.injectionTime]?.contains(userScript) ??
false)) {
_userScripts[userScript.injectionTime]?.add(userScript);
await channel?.invokeMethod('addUserScript', args);
}
}