在webview中加载本地javascript吗? [英] Load local javascript in webview?

查看:79
本文介绍了在webview中加载本地javascript吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在快速制作带有自己的广告的移动浏览器,我想运行脚本.我已经注入了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆