Hi,
für ein Spiel habe ich eine Echtzeitprüfung erstellt. Diese soll starten, wenn sich ein Wert in einem Textfeld ändert. Es wird also beim Event eine Funktion aufgerufen, die true oder false liefert. Ist die Rückgabe wahr, so wird eine alert-Box ausgegeben und das Spiel ist beendet.
Ein Beispiel zum verdeutlichen:
<script type="text/javascript">
window.onload = function(){
var message = "Bing";
Input = document.getElementsByName("test")[0];
Input.onclick = function() { if (isSolved(this)) { alert(message); }; };
Input.onfocus = function() { if (isSolved(this)) { alert(message); }; };
Input.onchange = function() { if (isSolved(this)) { alert(message); }; };
Input.onkeydown = function() { if (isSolved(this)) { alert(message); }; };
Input.onkeyup = function() { if (isSolved(this)) { alert(message); }; };
};
function isSolved() {
return true;
}
</script>
Es existiert ein Eingabefeld <input type="text" value="" name="test" />
. Wenn man nun ins Feld klickt, wird die alert-Box angezeigt. Das passiert ein paar mal, je nachdem, welche Events greifen...
Problem ist onfocus. Dieser liefert in der Konsole folgendes:
Fehler: [Exception... "'Die Erlaubnis für das Setzen der Eigenschaft XULElement.selectedIndex wurde verweigert' when calling method: [nsIAutoCompletePopup::selectedIndex]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: file:///C:/test.html :: anonymous :: line 13" data: no]
Quelldatei: file:///C:/test.html
Zeile: 13
Ein try-catch konnte ich nicht erfolgreich drumlegen und würde auch nicht die Ursache bekämpfen. Was ist also der Grund für diese Meldung? Liegt es daran, dass das Input-Feld durch die Box den Focus wieder verliert? Gibts dafür eine Lösung (außer auf diesen Event zu verzichten)? Das Problem tritt auch auf, wenn nur onfocus als Event ans Object gehangen wird und auf den Rest verzichtet wird!
Schöne Grüße
Micha