明确的事件监听器注入到webview

时间:2019-03-04 13:11:06

标签: javascript ios swift wkwebview addeventlistener

static func getWebKitView(uiController : ViewController, uiView : UIView, handlerName : String) -> WKWebView {
    let controller  = WKUserContentController()
    controller.add(uiController, name: handlerName)

    let config = WKWebViewConfiguration()
    config.userContentController = controller

    let scriptSource = """
        document.addEventListener('touchstart', function() { console.log('touchstart from Swift') })
        """
    let script = WKUserScript(source: scriptSource, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
    controller.addUserScript(script)

    let webKitView = WKWebView(frame: .init(x: 0.0, y: 0.0, width: uiView.frame.width, height: uiView.frame.height), configuration: config)
    webKitView.scrollView.isScrollEnabled = false
    webKitView.scrollView.contentSize = uiView.frame.size
    // webKitView.isUserInteractionEnabled = false
    return webKitView
}
  

添加scriptSource有何帮助?

我已经在我的JavaScript应用中制作了轮播。当我尝试在其中滑动图像时。我只能移动到第二张图片,而进一步滑动则无效。但是当我添加scriptSource时,此问题已解决。

我想知道添加该段代码后实际上发生了什么,为什么没有我的js代码就没有监听touchmove事件。

我尝试更改此脚本

let scriptSource = """
        document.addEventListener('touchstart', function() { console.log('touchstart from Swift') })
        """

使用此脚本

let scriptSource = """
        document.getElementByClassName('carousel-container').addEventListener('touchstart', function() { console.log('touchstart from Swift') })
        """

但是这次它也不起作用。问题依旧。

0 个答案:

没有答案