根据Apache Cordova博客的说法,使用WKWebView的iframe可能无法工作。(https://cordova.apache.org/news/2018/08/01/future-cordova-ios-webview.html)
我在App Store中有一个Cordova应用程序,它非常依赖于iframe。既然UIWebView可能会在iOS 13中被移除,那么有没有办法让iframes使用WKWebView工作呢?
以下是我到目前为止所做的工作:
我尝试使用离子WebView插件(https://github.com/ionic-team/cordova-plugin-ionic-webview),虽然它可以在我的应用程序的某些部分工作,但在iframe页面上不起作用。具体地说,我得到的Access-Control-Allow-Origin头包含无效值'null‘。使用UIWebView时,我不会得到这个错误。
发布于 2019-11-02 12:55:59
将此添加到您的科尔多瓦config.xml
<allow-navigation href="http://*.yourdomain.com/*" />
它将允许您的HTML页面从本地主机重定向到远程URL,无论是根文档还是iframe中的子项。
发布于 2020-12-04 02:50:51
我在我的Cordova应用程序中也遇到了这个问题,并找到了解决方法。它涉及到将内容直接写入iframe,而不是给它一个src="...“。这样,iframe就像父级一样运行在同源环境中。
(Iframes确实可以在WkWebView中工作;只是通过src="file://..."
加载的任何东西,例如,所有本地应用程序文件都被视为唯一来源,因此往往会搞砸任何跨框架的JavaScript。)
function frameEl_injectHtml(frameEl, injectHtml) {
// frameEl must exist in DOM before its contentWindow is accessible.
if (!frameEl.contentWindow) { alert("frameInjectHtml() but frameEl not (yet or anymore) in DOM."); return; }
frameEl.contentWindow.document.open('text/htmlreplace');
frameEl.contentWindow.document.write(injectHtml);
frameEl.contentWindow.document.close();
}
// Create <frame>, insert into DOM, and inject content.
var frameHtml = "<html><head></head>" +
"<body>" +
"iframe body" +
"<script>window.parent.alert('iframe even same-origin as parent.');</script>" +
"</body></html>";
var frameEl = document.createElement('iframe');
frameEl.src = "about:blank";
document.body.appendChild(frameEl);
frameEl_injectHtml(frameEl, frameHtml);
发布于 2020-04-21 19:39:34
将此添加到您的config.xml中
<allow-navigation href="*" />
然后构建你的ios平台
https://stackoverflow.com/questions/54469341
复制相似问题