在webview中加载本地javascript吗? [英] Load local javascript in webview?
问题描述
我正在快速制作带有自己的广告的移动浏览器,我想运行脚本.我已经注入了javascript本地文件,但是它在其他窗口中打开并覆盖了webview内容.是否可以在webview页面中运行javascript代码?不在其他窗口中,仅在具有页面内容的页面中.希望您能得到它
I'm making mobile browser with my own ads in swift and i want to run script.I already inject javascript local file but it opens in other window and override webview content.Is it possible to run javascript code in webview page? not in other window,only in page with page content.Hope you'll get it
推荐答案
使用WKWebView
进行javascript方法调用:
第1步.导入Webkit的类
Using WKWebView
for javascript method call:
Step 1. Import class for webkit
Obj-C:#import <WebKit/WebKit.h>
斯威夫特:import WebKit
Obj-C: #import <WebKit/WebKit.h>
Swift: import WebKit
第2步.创建一个WKWebView
实例(不幸的是,只能以编程方式完成)
Step 2. Create a WKWebView
instance (Unfortunately it can only be done programatically)
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];
迅速:
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):
Step 4 Load a HTML string (or a loadRequest) in the wkWebView
:
Obj-C:
[_wkWebView loadHTMLString:_desiredHTML baseURL:[[NSBundle mainBundle] bundleURL]];
迅速:
self.wkWebView?.loadHTMLString(_desiredHTML, baseURL: NSBundle.mainBundle().bundleURL)
第5步.调用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
}
}];
迅速:
let callMethod = String(format: "existingMethodWithParam(%@)", stringParam)
[self.wkWebView?.evaluateJavaScript(callMethod, completionHandler: { (obj, error) -> Void in
println(obj)
println(error)
})]
这篇关于在webview中加载本地javascript吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!