dhtmlXWindowsではWindowの右上部に閉じるボタン(close)があります。このボタンをクリックすると、onClose
イベントが発火します。
ところが、このイベントをハンドリングした場合、上記ドキュメント通りイベントハンドラを設定してもWindowが閉じません。
どうにもこうにもよくわからなかったので、サンプルを確認してみたところ以下の通りとなっていました。
var dhxWins, w1, w2, w3; function doOnLoad() { dhxWins = new dhtmlXWindows(); dhxWins.attachViewportTo("winVP"); w1 = dhxWins.createWindow("w1", 20, 30, 320, 200); w1.setText("dhtmlxWindow #1"); w2 = dhxWins.createWindow("w2", 50, 70, 320, 200); w2.setText("dhtmlxWindow #2"); w3 = dhxWins.createWindow("w3", 80, 110, 320, 200); w3.setText("dhtmlxWindow #3"); // personal event w1.attachEvent("onClose", function(win){ writeLog("personal event onClose called for "+win.getText()); return false; // <===ここ }); // global events dhxWins.attachEvent("onClose", function(win){ writeLog("global event onClose was called for "+win.getText()); return false; // <===ここ }); } function writeLog(text) { document.getElementById("logsHere").innerHTML += "<br>"+text; document.getElementById("logsHere").scrollTop = document.getElementById("logsHere").scrollHeight; } function doOnUnload() { if (dhxWins != null && dhxWins.unload != null) { dhxWins.unload(); dhxWins = w1 = w2 = w3 = null; } }
うーん良くあることなのですが、なぜか戻り値をboolean型で返却しています。しかも、サンプルではonClose
イベントを実行しても画面が閉じないようになっています。
ということで、onClose
イベントでtrueを返却するように変更してみると画面が閉じることが確認できます。つまり、閉じる場合はtrue
を指定し、閉じない場合はfalse
を指定することになります。
DHTMLXには良くあることなのですが、ドキュメントとサンプルが乖離していることがあります。特に、戻り値に関してはvoidであってもbooleanを指定すると挙動が変わることもあります。この辺はサンプルを注意して読んだりフォーラムを検索すると意外と出てきます。
以上、ご参考まで。
- 作者: 井上誠一郎,土江拓郎,浜辺将太
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る