JavaScript でウィンドウが最小化されたことを検出したいので、 を使用していdocument.hidden
ます。以下のスニペットで、[開始] をクリックし、最小化ボタンをクリックしてウィンドウを最小化し、タスクバーのアプリケーション アイコンを切り替え、Win+ 、 +などDown Arrowを使用します。WinD
ウィンドウを最小化すると、テキストエリアに「hidden」と表示されます。
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 では、次の 3 つの場合に「非表示」が表示されます。
- 最小化ボタンをクリックする
- Win+Down Arrow
- Win+D
しかし、この場合はそうではありません:
- タスクバーのアプリケーション アイコンの切り替え
また、ウィンドウが最初に最小化"hidden"
されたときにのみ表示されることにも気付きました。再度最小化すると「可視」と表示されます。
これは、WebBrowser コントロールが JS と統合する方法のバグだと思いますか? これに対する回避策はありますか?
document.hidden
これは間違っていることとはあまり関係がなく、JS のPage VisibilityWebBrowser
とうまく統合されていないことと関係があるため、この質問をより広い質問にすぐに転用する可能性があります。
私が発見したより一般的な問題は、VB6visibilitychange
のコントロールによってホストされているページで実行するとハンドラーが起動しないがWebBrowser
、ブラウザーでは完全に正常に動作することです。
var ta = document.getElementById("ta");
document.addEventListener("visibilitychange", function ()
{
ta.value += document.visibilityState + "\n";
});
<textarea id="ta" cols="50" rows="20"></textarea>