Имеет некоторый (грязный старый) код, который делает в основном следующее
<overlay id="slomozOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<dialog id="commonDialog"
onload="commonDialogOnLoad(); myLoad();"
ondialogaccept="myAccept(); Dialog.onButton0(); return true;">
<script type="application/x-javascript" src="chrome://myjar/overlay.js" />
</dialog>
</overlay>
Имена сделаны более общими, но overlay.js
обеспечивает myLoad
и myAccept
Как более целесообразно использовать addEventListener
для получения событий, освобождающихся от
- возиться с изменениями в исходном диалоге
- не сдуть других слушателей событий
Вот пример попытки изменить структуру.
<overlay id="myOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="text/javascript"><![CDATA[
window.addEventListener("load", function()
{
// code here equivelant to myLoad
// find button
button.addEventListener("command", function() { myAccept(); }, false);
}, false);
]]></script>
<dialog id="commonDialog"/>
</overlay>
Теперь проблема, с которой я, похоже, сталкиваюсь при попытке сделать это изменение, заключается в том, что myLoad
требует, чтобы исходные диалоги onLoad были завершены для некоторых изменений, которые он вносит - например, показ флажка.
Даже если это не так, добавление события на кнопку, похоже, полностью игнорируется.
Поэтому я попытался использовать loadComplete
для события и не заметил никаких изменений в поведении, myLoad
все еще выполняется до commonDialogOnLoad
.
Есть ли какой-либо способ указать, что событие должно быть запущено последним, или какое-то другое событие, которое будет использоваться позже?
Есть какое-то альтернативное предложение о том, как подойти к этому?