2014-09-09 5 views
7

Ich habe eine Seite geschrieben, die Schaltflächen mit onclick verwendet, um eine Funktion als Teil einer Reihe von Übungsproblemen und Antworten für meine Schüler aufzurufen. Es hat seit Juli ohne Probleme bis zum Freitag, dem 5. September gearbeitet. Heute funktionieren die Tasten überhaupt nicht mehr in Chrome, und ich kann mir nicht vorstellen, warum ich das getan habe. Sie funktionieren weiterhin ordnungsgemäß in IE.OnClick funktioniert auf Google Sites in Chrome nicht

Ich habe den einfachsten Code geschrieben, den ich schreiben könnte, der unten nicht funktioniert. Es ist furchtbar einfach und ehrlich, ich denke, es ist in Ordnung. Es scheint zu funktionieren, wenn ich die gesamte Sache in JSFiddle's HTML-Box einfügen werde, aber wenn ich versuche, das Skript zu trennen, tut es nichts. Ich weiß nicht, ob das so ist, weil es kaputt ist oder weil ich es falsch getrennt habe.

Ich habe Probleme beim Debuggen, vor allem weil Google Sites Ihre Arbeit vollständig in ein eigenes Format umwandelt, das mehr oder weniger unlesbar ist, ohne dass es aus Silizium besteht. Wenn ich diese laden und versuchen zu klicken, ich eine Ausnahme erhalten:

Uncaught Error: shouldn't happen: ES5/3 object passed to makeDOMAccessible 

Aber ich habe absolut kein Glück gehabt mit, herauszufinden, was dort geschieht, oder ob das auch wirklich das Problem ist oder nicht.

Ich habe viel über Google Sites gelesen, die wählerisch mit Javascript sind, und ich weiß nicht, ob das Problem mit Sites oder Chrome oder den beiden zusammen ist oder was, aber es ist etwas, das ich gerne sortiert bekommen würde aus, da der Großteil meiner Studenten und ich hauptsächlich Chrome verwenden.

Der gesamte folgende Code wird in eine eingefügte HTML-Box wie geschrieben, nur FYI.

Entschuldigung, wenn sich herausstellt, dass es sich um ein Duplikat handelt; Ich suchte eine ganze Weile und konnte keine Lösung finden.

<html> 
<body> 
<button onclick="Check()">Push Me</button> 

<script> 
function Check() { 
    alert("It worked"); 
} 
</script> 

</body> 
</html> 

Irgendwelche Vorschläge für die Festsetzung, was ich habe (wenn es sogar kaputt ist) oder es auf einfache Art und Weise redoing, die mit Seiten und Chrome wäre willkommen funktionieren würde. Danke im Voraus.

Here is one full page that was working previously in Chrome and is no longer. Es zeigte die Reihen einer Tabelle an, als Sie die verschiedenen Knöpfe drückten.

EDIT: Dies scheint in älteren Versionen von Chrome zu funktionieren. Ich denke, ich muss die Chrome-Foren mit diesem Problem aufrufen.

+0

nicht sicher, ob ich das Richtige teste, aber ich bekomme Zeilen beim Klicken auf Schaltflächen (34.0.1847.116/Linux) – FuzzyTree

+0

Ja, es wäre die Schaltflächen am unteren Rand der verknüpften Seite, die Zeilen geben, wenn Sie klicken. Sie verwenden Chrome auch? Es funktionierte nicht für mindestens zwei Dutzend Leute in meiner Schule heute oder für mich auf einer völlig separaten Maschine zu Hause heute Abend. (Und ich habe es über das Inkognito-Fenster mit einem Login ohne Administratorrechte versucht.) –

+1

ja, ich bin auf Chrom. Alle Knöpfe funktionieren für mich (Zeilen für Anfang, Änderung, Ende addierend) und die Prüfungsfrageknöpfe arbeiten auch – FuzzyTree

Antwort

2

Der von epascarello vorgeschlagene Workaround, der anstelle von onclick-Ereignissen addEventListener verwendet, scheint zu funktionieren. Ich kann das Alert-Fenster in meinem Beispiel immer noch nicht aus irgendeinem Grund (gegen die Sites-Richtlinie?) Funktionieren lassen, aber die eigentliche Funktionalität, die ich wollte und die innerHTML eines Absatzobjekts festlegt, funktioniert ordnungsgemäß.

Dies scheint ein Problem zwischen Google Sites und Chrome v.37 zu sein. Hoffentlich ist es in naher Zukunft gelöst.

Hier ist ein Beispiel für gleichwertigen Code, der korrekt funktioniert.

<html> 
<body> 

<button id="AnswerButton1">Check Answer 1</button> 

<p id="Answer1"></p> 

<script> 
    document.getElementById("AnswerButton1").addEventListener("click",function(){Answer(1);}); 

    function Answer(n){ 
     document.getElementById("Answer"+n).innerHTML = "Answer to Number 1"; 
    } 

</script> 
</body> 
</html> 

Dank denen, die geholfen haben.

Verwandte Themen