当前位置: 首页 > 面试题库 >

使用Swift在iOS WKWebview中捕获Javascript事件

仉嘉泽
2023-03-14
问题内容

我正在使用Web编程语言构建应用程序,并希望在用户单击HTML按钮时启动相机。由于我希望相机视图是自定义视图,因此需要使用Swift进行设计。因此,当用户单击此HTML按钮时,我想在Swift中“捕获”此单击,以便启动本机相机视图。

我知道可以用WKWebview完成,但是我真的不知道该怎么做。

例如,我的Javascript(jQuery)代码可能如下所示:

// User clicks to start the native camera with Swift
$(".camera_button").click(function() {
    // Function to call the camera view from JS to Swift
});

你能帮我做到吗?

谢谢。


问题答案:

根据@Alex Pelletier的回答(对我有很大帮助),这是我的问题的解决方案

在我的“ loadView()”函数中,这是我拥有的:

let contentController = WKUserContentController();
contentController.addScriptMessageHandler(
    self,
    name: "callbackHandler"
)

let config = WKWebViewConfiguration()
config.userContentController = contentController

webView = WKWebView(frame: CGRectZero, configuration: config)
webView.navigationDelegate = self
view = webView

我处理发送到Swift的Javascript事件的函数:

func userContentController(userContentController: WKUserContentController, didReceiveScriptMessage message: WKScriptMessage)
    {
        if(message.name == "callbackHandler") {
            print("Launch my Native Camera")
        }
    }

…最后,当我的相机按钮(以HTML格式)单击时,我的Javascript(jQuery)代码:

$(document).ready(function() {

    function callNativeApp () {
        try {
            webkit.messageHandlers.callbackHandler.postMessage("camera");
        } catch(err) {
            console.log('The native context does not exist yet');
        }
    }

    $(".menu-camera-icon").click(function() {
        callNativeApp();
    });
});

我希望它会对其他人有所帮助:-)!



 类似资料:
  • 问题内容: 我在游乐场中获得了以下代码: 因此很明显,该函数会引发错误: 执行被中断,原因:EXC_BAD_INSTRUCTION 有没有办法抓住这个?我在线阅读文章,为Array类编写一个下标,该下标始终检查范围,但问题更大:我无法捕捉任何东西吗? 问题答案: 在Swift中,您什么都做不到。您只能赶上 错误 与抛出由被称为目标C代码的其他银行代码或错误,类型NSError一套说法。 默认的数组

  • 主要内容:事件捕获,事件冒泡,阻止事件捕获和冒泡,阻止默认操作在 JavaScript 中,我们将事件发生的顺序称为“事件流”,当我们触发某个事件时,会发生一些列的连锁反应,例如有如下所示的一段代码: 如果给每个标签都定义事件,当我们点击其中的 标签时,会发现绑定在 和 标签上的事件也被触发了,这到底是为什么呢?为了解答这一问题,微软和网景两公司提出了两种不同的概念,事件捕获与事件冒泡: 事件捕获:由微软公司提出,事件从文档根节点(Document 对象)流

  • 问题内容: 当用户更改页面缩放时,是否可以使用JavaScript检测?我只是想捕获一个“缩放”事件并对其进行响应(类似于window.onresize事件)。 谢谢。 问题答案: 无法主动检测是否有变焦。我在这里找到了如何尝试实现它的好方法。 我发现了两种检测缩放级别的方法。检测缩放级别变化的一种方法取决于不缩放百分比值的事实。百分比值是相对于视口宽度的,因此不受页面缩放的影响。如果您插入两个元

  • 本文向大家介绍浅谈javascript中的事件冒泡和事件捕获,包括了浅谈javascript中的事件冒泡和事件捕获的使用技巧和注意事项,需要的朋友参考一下 1.事件冒泡   IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。以下面的HTML 页面为例: 如果你单击了页面中的<div

  • 问题内容: 我需要在弹出窗口(使用)关闭之前执行一些操作。 像这样的东西会很好: 我该如何实现? 问题答案: 只要弹出窗口的url与父 页面 位于同一个域中, 您的示例就会起作用,并且您将事件更改为小写:

  • 简单场景-ScrollView托管一个具有多个子元素的LinearLayout,这是在Android上开发支持滚动的视图的首选模式。 我需要捕获onScrollEvents,启动,停止等。如果我使用ListView/onScrollListener组合,它们很容易获得并且工作得很好。 用于滚动视图的专用小部件是否具有捕获这些事件的内置功能?加油!我尝试过 OnTouchEvent 听众,onGes