1

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 でホストしています。

コントロールWebBrowserCommandButton. 私の唯一のコードはこれです:

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>

4

1 に答える 1