- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 WKWebView,我正在加载要显示的网页 (React)。但是我的 didFinish 触发得太早了。因此,当我的代表通知 didFinish 时,在加载实际数据之前,我只会看到几秒钟的白屏。
This is not working, causes white screen - before showing actual content
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
activityIndicator?.stopAnimating()
}
相反,我读了这篇文章,告诉我应该可以通过让网页在加载时通知 Swift 代码来实现。
https://medium.com/capital-one-developers/javascript-manipulation-on-ios-using-webkit-2b1115e7e405
我确实在我的 Xcode 项目中实现了以下代码
override func viewDidLoad() {
super.viewDidLoad()
let userContentController = WKUserContentController()
userContentController.add(self, name: "test")
}
extension DashboardViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "test", let messageBody = message.body as? String {
print(messageBody)
}
}
}
但是,现在我们到了。我不知道把它放在哪里,因为我的网络应用程序是用 React 编写的。
<script>
function printHelloWorld() {
window.webkit.messageHandlers.test.postMessage("Did finish loading");
}
window.onload = printHelloWorld;
</script>
我的 React 组件
class Page extends React.Component<{ location, match }> {
public render() {
const content = (
<div className="row">
<p>Content</p>
</div>
);
return (
content
)
}
}
export default Page;
谁能告诉我,如何在我的 React 组件中使用 window.webkit.messageHandlers.test.postMessage
?
最佳答案
尝试在组件挂载时调用该函数:
class Page extends React.Component<{ location, match }> {
componentDidMount() {
window.webkit.messageHandlers.test.postMessage("Did finish loading");
}
render() {
...
}
}
它有点像 React 组件的onload。
关于 componentdidmount 的更多信息
关于javascript - React 的 webkit.messageHandlers 将 JavaScript 注入(inject) Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450360/
我想将 JavaScript 变量传递给 Swift。我在 JavaScript 中遇到错误并搜索它,但没有得到任何结果。错误是: TypeError: Cannot read property 'm
我正在使用 Symfony Messenger,我想在处理程序中继续发送消息,直到它被发送多次。 我怎样才能跟踪它? 到目前为止,这是我的处理程序类的代码: class RetryTestHandle
我面临以下问题,但尚未找到有效的解决方案。我有 3 个不同的应用程序,它们应该相互通信: 用户界面部分(1) 后端应用程序(2) “云端”微服务(3) 后端应用程序为 UI 提供 Web 服务 (RE
我想通过拆分并行处理项目列表,将每个项目路由到它们适当的网关并聚合结果。但是,我的应用程序没有启动,出现以下错误: BeanCreationException: The 'currentCompone
我们有一组在 JAX-WS 中实现的 Web 服务和一个在 SOAP header 中添加控制属性的 SOAPHandler。今天,我们需要在我们创建的每个新服务中添加 @HandlerChain 注
我如何从 MessageHandler 中检索 ActionDescriptor? 我可以使用以下代码在 SendAsync 方法中获取 ContractDescriptor: var config
我正在尝试使用 IdempotentReceiverInterceptor 来防止我的集成流发出它已经生成的消息。但是,IdempotentReceiverInterceptor#invoke 似乎只
Tomcat 8.0.21 这个有效: session.addMessageHandler(new MessageHandler.Whole() { @Override
我试图通过事件从 web View 中执行 android 中的代码。所以我用 JavascriptInterface 实现了一个好方法,但是因为我有一个 iOS 应用程序,所以我想使用相同的方法。那
更新:错误在于使用 Action onSuccess对于实际任务并在没有 await 的情况下调用它。我们实际上正在传递一个 async回调作为 onSuccess ,因此它不会阻塞,它只是被解雇而不
在我的 pdf 中,在我的 onOpenAction 中,我有这个 js 代码: app.alert(this.hostContainer); try { this.hostContainer.
我花了相当多的时间试图弄清楚如何导入和使用来自 spring 框架 的 MessageHandler 接口(interface)。以下是我使用 IntelliJ Idea IDE 所做的事情: imp
我有一个简单的 Spring Integration 配置可以工作 @Configuration public class FTPIntegration { @Bean public MessageC
我有一个疯狂的问题。我对按钮、richedits、复选框进行了子类化,.. 一切似乎都工作正常。但是在我对 trackbar 进行子类化之后,我现在遇到了一些麻烦。问题是我的子类消息处理程序没有收到
我正在使用 WKWebView,我正在加载要显示的网页 (React)。但是我的 didFinish 触发得太早了。因此,当我的代表通知 didFinish 时,在加载实际数据之前,我只会看到几秒钟的
我正在使用 PDF.JS 加载 pdf。加载pdf时,我收到此错误, ERROR Error: Unknown action from worker: undefined at Worker.
是否可以仅为使用路由属性的特定 Controller 添加 MessageHandler? 如果它不包含某些 header ,我想在管道中更早地切断请求。我想要 提到: 我不能在 WebApiConf
我正在尝试使用 DSL 测试一些带有 spring-integration 的东西。到目前为止这只是一个测试,流程很简单: 创建一些消息 并行处理(记录)它们 聚合它们 记录聚合 除了聚合器,它工作正
我成功地将 Autofac 连接到我的 ASP.NET WebAPI 项目中,现在我想知道如何能够解析我的 MessageHandler 中的服务。 由于必须在应用程序启动时添加 MessageHan
我正在努力处理 Spring-WS 项目。 在我的 Endpoint 类中,如果我没有指定我正在接收/返回 JAXBElement,我会收到以下错误:No adapter for endpoint;您
我是一名优秀的程序员,十分优秀!