1 javascript iphone webview ios swift
我正在swift中使用自己的广告制作移动浏览器,我想运行脚本.我已经注入了javascript本地文件,但它在其他窗口中打开并覆盖webview内容.是否可以在webview页面中运行javascript代码?不在其他窗口,只在页面内容的页面中.希望你能得到它
WKWebViewJavaScript的方法调用:步骤1.导入webkit的类
Obj-C:#import <WebKit/WebKit.h>
Swift: import WebKit
第2步.创建一个WKWebView实例(不幸的是,它只能以编程方式完成)
OBJ-C @property (strong, nonatomic) WKWebView *wkWebView;
迅速 var wkWebView: WKWebView? = WKWebView()
第3步.然后在viewDidLoad
OBJ-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];
Run Code Online (Sandbox Code Playgroud)
迅速:
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!)
Run Code Online (Sandbox Code Playgroud)
步骤4在以下位置加载HTML字符串(或loadRequest)wkWebView:
OBJ-C:
[_wkWebView loadHTMLString:_desiredHTML baseURL:[[NSBundle mainBundle] bundleURL]];
Run Code Online (Sandbox Code Playgroud)
迅速:
self.wkWebView?.loadHTMLString(_desiredHTML, baseURL: NSBundle.mainBundle().bundleURL)
Run Code Online (Sandbox Code Playgroud)
第5步.调用包含在javascript中的javascript中存在的方法WKWebView
OBJ-C:
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
}
}];
Run Code Online (Sandbox Code Playgroud)
迅速:
let callMethod = String(format: "existingMethodWithParam(%@)", stringParam)
[self.wkWebView?.evaluateJavaScript(callMethod, completionHandler: { (obj, error) -> Void in
println(obj)
println(error)
})]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |