可可:在模式会话中调用JSContext上的JS函数不起作用

时间:2018-07-04 14:11:29

标签: swift cocoa modal-dialog javascriptcore

我们正在开发使用JavascriptCore VM执行一些JS代码的Cocoa应用。

在启动时,我们初始化一个JSContext并在其中加载我们的JS包。必要时,我们的快速代码使用JSValue.call(withArguments:)方法调用JS函数。

这通常可以正常工作,我们也可以使用Safari调试器调试JS调用。

当我们的应用程序使用以下方式显示模式窗口时,就会出现问题:

NSApp.runModal(for: window)

如果模式窗口的代码尝试调用该方法

JSValue.call(withArguments:)

未执行JS代码:我们无法在Safari调试器中设置断点,并且不会显示JS代码内部的日志。

实际的JSValue.call行已执行,就像在不执行JS代码的情况下返回一样。

一开始,我怀疑它与Runloop模式有关,并试图给它一些时间来运行在模态会话中,如下面的解释:Cocoa: how to run a modal window while performing a background task?。这没用。

注意:如果我们使用NSViewController .presentViewControllerAsSheet()以表格形式运行模式,则所有JS Function调用均按预期工作,但我们的用例最好需要一个应用程序模式窗口。

有什么建议吗?

0 个答案:

没有答案