我正在将我的应用程序从 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>
一些_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”之类的东西...
谢谢你的帮助!