JavaScript 中的屏幕对象在 QWebEnginePage 中不可用
screen object in JavaScript not available in a QWebEnginePage
我有一个使用 QWebChannel
.
启动 Webview 的 Qt 应用程序
在这些视图中,我让 JavaScript 做一些事情以便 position/resize window 根据屏幕大小。 screen
对象应该提供此类信息。 (screen doc)
但是在我的QWebEnginePage
中,screen对象在整个加载过程中都是空的。
如果我在按钮上放置一个侦听器以 screen.height
页面上的某处,现在它可以工作了。
//js local file called in html head
//screen = {}
document.addEventListener("load", function(event) {
//screen = {}
new QWebChannel(qt.webChannelTransport, function(channel) {
//screen = {}
//stuff
channel.object.myClass.show(function(res){ //Qt function that calls the show() method of the QWebEngineView
//screen = {}
});
});
document.getElementById("myBtn").addEventListener("click", function(){
console.log("height:" + screen.height); // screen: 1440
});
});
所以我的问题是,如何在 JavaScript 中的某个时间点访问 screen
值?
我认为目前您正在尝试访问您的 screen
对象,它不可用。事实上,您的 HTML 文件将被直接加载,但其他对象如 JavaScript objects/programs 或样式表(例如 CSS 文件)将被异步加载 。
在QWebEnginePage的文档中有说明:
The html is loaded immediately; external objects are loaded asynchronously.
因此,当您的页面未加载时,您无法访问此 属性。但是,您可以在页面加载后访问它,就像您实际上在按钮上使用侦听器一样。获取这些属性的另一种方法是在 class 中定义 Q_INVOKABLE
方法,以便在 C++ 端检索它们 ()。
我有一个使用 QWebChannel
.
在这些视图中,我让 JavaScript 做一些事情以便 position/resize window 根据屏幕大小。 screen
对象应该提供此类信息。 (screen doc)
但是在我的QWebEnginePage
中,screen对象在整个加载过程中都是空的。
如果我在按钮上放置一个侦听器以 screen.height
页面上的某处,现在它可以工作了。
//js local file called in html head
//screen = {}
document.addEventListener("load", function(event) {
//screen = {}
new QWebChannel(qt.webChannelTransport, function(channel) {
//screen = {}
//stuff
channel.object.myClass.show(function(res){ //Qt function that calls the show() method of the QWebEngineView
//screen = {}
});
});
document.getElementById("myBtn").addEventListener("click", function(){
console.log("height:" + screen.height); // screen: 1440
});
});
所以我的问题是,如何在 JavaScript 中的某个时间点访问 screen
值?
我认为目前您正在尝试访问您的 screen
对象,它不可用。事实上,您的 HTML 文件将被直接加载,但其他对象如 JavaScript objects/programs 或样式表(例如 CSS 文件)将被异步加载 。
在QWebEnginePage的文档中有说明:
The html is loaded immediately; external objects are loaded asynchronously.
因此,当您的页面未加载时,您无法访问此 属性。但是,您可以在页面加载后访问它,就像您实际上在按钮上使用侦听器一样。获取这些属性的另一种方法是在 class 中定义 Q_INVOKABLE
方法,以便在 C++ 端检索它们 (