iFrame src无法在Android Webview中处理Base64编码的HTML内容

g6baxovj  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(257)

我正在开发一个应用程序的项目,该应用程序将在webview中显示我的react应用程序。ReactJS应用程序在webview中完美工作,这就是为什么我假设JS在webview中激活。但是,我试图显示一个base64编码的HTML内容,我试图显示如下:
<iframe src={data:text/html;base64,${HtmlContent}}/>
这种方法在浏览器(Chrome)中运行良好,但在webview中根本不起作用。
我使用了srcdoc而不是src。但是我不能将postMessage作为ReactJS应用的父代。
在这种情况下,有没有办法使用srcdoc,或者在webview中iframe会有什么问题?

yh2wf1be

yh2wf1be1#

但是,由于我可以控制iframe的和,所以我简单地在iframe的父级中创建了一个函数,如下所示:

useEffect(() => {
    // Only create once
    // Create a custom function and put it to the window object
    window.handleResult = handler;
}, [])

然后从iFrame内部使用以下命令访问它;

<script type="text/javascript">
    window.top.handleResult({success: params.success, error: params.error})
</script>

这种方法实际上效果更好。如果你出于某种原因需要多一个嵌套的iframe,你可以得到这个函数,不管它有多深,因为iframe内容无论如何都会得到“top”窗口。
我分享这个是因为这个问题可以用不同的方法来解决。也许不是最好的方法,但它是一个有效的方法。

相关问题