Я хочу определить, когда окно свернуто в JavaScript, поэтому я использую document.hidden
. В приведенном ниже фрагменте нажмите «Пуск» и сверните окно, нажав кнопку свертывания, переключив значок приложения на панели задач, используя Win + Стрелка вниз, используя 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>
Никаких проблем.
Однако я размещаю этот код JS в VB6.
Я создал простой проект с формой с элементом управления WebBrowser
и элементом управления CommandButton
. Мой единственный код:
Private Sub Command1_Click()
WebBrowser1.Navigate "http://localhost:1234/mypage.html"
End Sub
Щелчок по командной кнопке приводит меня к той же странице:
В VB6 "скрытый" отображается для следующих трех случаев:
- нажав кнопку свернуть
- Win + Стрелка вниз
- Победа + D
Но не в этом случае:
- переключение значка приложения на панели задач
Я также заметил, что "hidden"
отображается только при первом сворачивании окна. Если вы снова свернете его, он будет отображаться как «видимый».
Я предполагаю, что это ошибка интеграции элементов управления WebBrowser с JS? У кого-нибудь есть обходные пути для этого?
Я могу вскоре изменить этот вопрос на более широкий, так как это связано не столько с ошибкой document.hidden
, сколько с WebBrowser
плохой интеграцией с JS Видимость страницы.
Более общая проблема, которую я обнаружил, заключается в том, что обработчик visibilitychange
не срабатывает при запуске на странице, размещенной элементом управления WebBrowser
в VB6, но отлично работает в браузере:
var ta = document.getElementById("ta");
document.addEventListener("visibilitychange", function ()
{
ta.value += document.visibilityState + "\n";
});
<textarea id="ta" cols="50" rows="20"></textarea>