我想检测一个窗口何时在 JavaScript 中最小化,所以我使用document.hidden
. 在下面的代码段中,单击“开始”并通过单击最小化按钮、切换任务栏中的应用程序图标、使用Win+ Down Arrow、使用Win+D等来最小化窗口。
当窗口最小化时,您会看到“隐藏”出现在文本区域中。
var startButton = document.getElementById("start");
var stopButton = document.getElementById("stop");
var ta = document.getElementById("ta");
var id;
startButton.onclick = function() {
id = setInterval(function() {
ta.value += document.hidden ? "hidden\n" : "visible\n";
}, 1000);
};
stopButton.onclick = function() {
if (id) clearInterval(id);
};
<button id="start">Start</button>
<button id="stop">Stop</button>
<br />
<textarea id="ta" cols="50" rows="20"></textarea>
那里没有问题。
但是,我在 VB6 中托管此 JS 代码。
我创建了一个简单的项目,其中包含一个带有WebBrowser
控件和CommandButton
. 我唯一的代码是这样的:
Private Sub Command1_Click()
WebBrowser1.Navigate "http://localhost:1234/mypage.html"
End Sub
单击命令按钮将我带到同一页面:
在 VB6 中,这三种情况显示为“隐藏”:
- 单击最小化按钮
- Win+Down Arrow
- Win+D
但不是,在这种情况下:
- 切换任务栏中的应用程序图标
我还注意到"hidden"
仅在第一次最小化窗口时显示。如果再次最小化它,它将显示“可见”。
我猜这是 WebBrowser 控件如何与 JS 集成的错误?有没有人有任何解决方法?
我可能很快会将这个问题重新用于更广泛的问题,因为这与document.hidden
错误的关系不大,而与没有与 JS 的Page VisibilityWebBrowser
很好地集成有关。
我发现的一个更普遍的问题是,当在 VB6 中visibilitychange
的控件托管的页面中运行时,处理程序不会触发WebBrowser
,但在浏览器中完全可以正常工作:
var ta = document.getElementById("ta");
document.addEventListener("visibilitychange", function ()
{
ta.value += document.visibilityState + "\n";
});
<textarea id="ta" cols="50" rows="20"></textarea>