我正在将我的应用程序从 WebKit 移植到 WebEngine(似乎一个更好地呈现 angular-basad html)。我遇到的问题是我无法启用 QtWebEngine 加载本地 iframe,尽管我已经设置了我发现的所有可能的设置:
来自 mainwindow.cpp 的代码
view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
view->page()->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
view->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
view->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
view->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
最简单的示例是使用基于 WebEngine 的 FancyBrowser (\Examples\Qt-5.4\webenginewidgets\fancybrowser) 并尝试在其中加载本地 html 文件,如下所示:
索引.html:
<html>
<head>
<title>Hi there</title>
</head>
<body>
This is a page
a simple page
<iframe id="some_idrame" width="0" height="0" style="border: none" src="some_iframe.html" name="target" sandbox="allow-scripts"></iframe>
</body>
</html>
some_iframe.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>La-la-la</title>
</head>
<body>
Lalala
</body>
</html>
如果将环境变量 QTWEBENGINE_REMOTE_DEBUGGING 设置到某个端口,则可以打开 127.0.0.1:port 并在控制台中看到此错误:
"Not allowed to load local resource".
我现在真的不知道如何解决这个问题......应该有一些方法可以传递给WebEngine,比如“--disable-web-security”......
谢谢你的帮助!