Stellen Sie sicher, dass die JavaScript-Datei eine globale Variable explizit setzt:
window['lang'] = {'edit': 'Edit'};
Stellen Sie sicher, explizit Ihren Event-Handler-Code auf die globale "lang" Variable verweist:
<select onchange='alert(window.lang.edit)'>
Die erste ist wahrscheinlich schon in Ordnung, aber ich füge hinzu, nur um sicherzustellen, dass. Die zweite Sache, nun, die Interpretation von "Onfoo" Attributwerten ist subtil und seltsam. Wenn es ein „lang“ ist Attribut des <select>
DOM-Elements oder ein „lang“ -Attribut auf einen <form>
Tag den <select>
umgibt, dann einen Verweis auf die Kennung „lang“ in dem „Onclick“ Wert wird abholen dass statt der globalen "lang", die Sie in der JavaScript-Datei definieren. Ihr „Onclick“ Wert wird in eine Funktion (um es als Event-Handler zu arbeiten) gedreht von einem Prozess, der mehr oder weniger wie folgt aussieht:
var handler = new Function("event", "with (this.form) { with (this) { alert(lang.edit); }}");
Es ist komisch, aber das ist eigentlich das, was passiert, mit dieser Art von Event-Handler-Code.
Dort ist kein JSON, nur ein normales Objekt (und die Syntax wäre immer noch nicht JSON, wenn Sie es aus dem JS herausgenommen hätten, JSON verwendet nur doppelte Anführungszeichen). Es gibt keinen Grund in Ihrer Frage, dass es nicht funktioniert, das Problem ist wahrscheinlich woanders. – Quentin