我正在使用Swift制作带有自己广告的移动的浏览器,我想运行脚本。我已经注入了JavaScript本地文件,但它在其他窗口中打开并覆盖了webView内容。是否可以在webView页面中运行JavaScript代码?不能在其他窗口中运行,只能在页面内容中运行。
hwazgwia1#
WKWebView
**步骤1.**导入webkit类
目标C:#import <WebKit/WebKit.h>Swift:import WebKit
#import <WebKit/WebKit.h>
import WebKit
**第二步.**创建WKWebView示例(可惜只能通过脚本完成)
Obj-C @property (strong, nonatomic) WKWebView *wkWebView;Swift var wkWebView: WKWebView? = WKWebView()
@property (strong, nonatomic) WKWebView *wkWebView;
var wkWebView: WKWebView? = WKWebView()
**步骤3.**然后在viewDidLoad中
viewDidLoad
目标C:
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; NSString *scriptSourceCode = @"your javascript code here"; WKUserScript *script = [[WKUserScript alloc] initWithSource:source injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES]; WKUserContentController *controller = [[WKUserContentController alloc] init]; [controller addUserScript:script]; configuration.userContentController = controller; _wkWebView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; [self.view addSubview:_wkWebView];
字符串雨燕:
let configuration = WKWebViewConfiguration() let controller = WKUserContentController() let scriptSourceCode = "your javascript code here" let script = WKUserScript(source: scriptSourceCode, injectionTime: WKUserScriptInjectionTime.AtDocumentStart, forMainFrameOnly: true) controller.addUserScript(script) configuration.userContentController = controller self.wkWebView = WKWebView(frame: self.view.frame, configuration: configuration) self.view.addSubview(self.wkWebView!)
型
步骤4在wkWebView中加载HTML字符串(或loadRequest):
wkWebView
[_wkWebView loadHTMLString:_desiredHTML baseURL:[[NSBundle mainBundle] bundleURL]];
型雨燕:
self.wkWebView?.loadHTMLString(_desiredHTML, baseURL: NSBundle.mainBundle().bundleURL)
第五步.调用WKWebView中包含的JavaScript中的方法
NSString *callMethod = [NSString stringWithFormat:@"existingMethodWithParam(%@)", stringParam]; [_wkWebView evaluateJavaScript:callMethod completionHandler:^(id obj, NSError *error) { if (error) { NSLog(@"ERROR evaluating JavaScript - %@", error); } else { NSLog(@"Returned value - %@", obj); //if the javascript method has a return type } }];
let callMethod = "existingMethodWithParam()" self.wkWebView?.evaluateJavaScript(callMethod) { obj, error in print(obj) print(error) }
1条答案
按热度按时间hwazgwia1#
使用
WKWebView
进行JavaScript方法调用:**步骤1.**导入webkit类
目标C:
#import <WebKit/WebKit.h>
Swift:
import WebKit
**第二步.**创建
WKWebView
示例(可惜只能通过脚本完成)Obj-C
@property (strong, nonatomic) WKWebView *wkWebView;
Swift
var wkWebView: WKWebView? = WKWebView()
**步骤3.**然后在
viewDidLoad
中目标C:
字符串
雨燕:
型
步骤4在
wkWebView
中加载HTML字符串(或loadRequest):目标C:
型
雨燕:
型
第五步.调用
WKWebView
中包含的JavaScript中的方法目标C:
型
雨燕:
型