【问题标题】:WKWebView Canvas issue. Links inside canvas aren't doing anythingWKWebView 画布问题。画布内的链接没有做任何事情
【发布时间】:2020-10-18 18:22:14
【问题描述】:

我遇到了 WKWebview 的问题。 我正在将一个画布从 html 加载到 Webview 中。 这是链接: https://cdn-factory.marketjs.com/en/color-fill-playable-ad-demo/index.html

它运行完美,加载 html 游戏,一切似乎都很好,当你玩迷你游戏时,触摸事件正常工作,有一个按钮“立即安装” 那应该打开应用商店的网址,当我点击它时,什么也没有发生。 在浏览器上它可以工作,我已经尝试了一些游戏,但没有任何效果。

有什么建议吗? webview 首选项allowjs 和允许内联媒体设置为true。 除此之外,我找不到任何关于它的信息。 感谢您的帮助:D 谢谢!

iOS:13.4.1 迅捷:5 iPhone xs max

【问题讨论】:

    标签: html ios swift canvas wkwebview


    【解决方案1】:

    好的,我想通了。 以防将来有人抨击它。

    所以使用的网页:

    window.open("http://asdfsadfsda")
    

    在新窗口中打开网址的javascript代码。

    WKWebview 不会做任何事情,除非你实现 WKUIDelegate 和方法

    webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration,
             for navigationAction: WKNavigationAction,
             windowFeatures: WKWindowFeatures) -> WKWebView?;
    

    为了让这个方法被调用,另一个重要的事情是在 webview 首选项中设置如下:

            let preferences = WKPreferences()
            preferences.javaScriptEnabled = true
            let configuration = WKWebViewConfiguration()
            configuration.preferences = preferences
            configuration.allowsInlineMediaPlayback = true;
            
            configuration.preferences.javaScriptCanOpenWindowsAutomatically = true
            configuration.preferences.javaScriptEnabled = true
    

    然后您可以在委托方法中处理新页面的打开。 如果你仍然想要一个新窗口,你应该创建一个新的 webview 并在委托方法中返回它。

    在我的情况下,它什么也不做,只是获取 url 等。 所以我返回 nil。

    祝你好运:)

    【讨论】:

      猜你喜欢
      • 2021-01-26
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 2020-08-25
      • 1970-01-01
      • 2014-01-08
      相关资源
      最近更新 更多