iFrame src 不适用于 Android Webview 中的 Base64 编码 HTML 内容
iFrame src not working with Base64 Encoded HTML Content in Android Webview
我正在开发一个应用程序项目,它将在网络视图中显示我的 React 应用程序。
ReactJS 应用程序在 webview 中完美运行,这就是为什么我假设 JS 在 webview 中被激活。
但是,我正在尝试显示 base64 编码的 HTML 内容,我正在尝试显示如下内容;
<iframe src={`data:text/html;base64,${HtmlContent}`}/>
这种方法在浏览器中运行良好 (Chrome),但在 webview 中根本不起作用。
我用了 srcdoc
而不是 src
。但是我不能 postMessage
父级 ReactJS 应用程序。
有没有办法在这种情况下使用 srcdoc
或者在 webview 中 iframe 可能有什么问题?
事实上,我无法使用这种方法。
但是,因为我可以同时控制 iframe 和 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”window 无论如何。
我分享这个是因为这个问题可以用不同的方法解决。也许不是最好的方法,但它是 a 工作方式。
我正在开发一个应用程序项目,它将在网络视图中显示我的 React 应用程序。 ReactJS 应用程序在 webview 中完美运行,这就是为什么我假设 JS 在 webview 中被激活。 但是,我正在尝试显示 base64 编码的 HTML 内容,我正在尝试显示如下内容;
<iframe src={`data:text/html;base64,${HtmlContent}`}/>
这种方法在浏览器中运行良好 (Chrome),但在 webview 中根本不起作用。
我用了 srcdoc
而不是 src
。但是我不能 postMessage
父级 ReactJS 应用程序。
有没有办法在这种情况下使用 srcdoc
或者在 webview 中 iframe 可能有什么问题?
事实上,我无法使用这种方法。 但是,因为我可以同时控制 iframe 和 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”window 无论如何。
我分享这个是因为这个问题可以用不同的方法解决。也许不是最好的方法,但它是 a 工作方式。