• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

jQuery und Scripts in JSON...

DarkDragon193

Neues Mitglied
Ich verstehe das ziemlich gar nicht... Hab etwas gegooglet und nur gefunden, dass man die <script>-Tags escapen muss. Allerdings hab ich diese nicht und dennoch wird des Script automatisch geparset und ausgeführt.
Ich hab ein Objekt, das ungefähr so aussieht:
Code:
{
    "title" : "Foo",
    "href" : "index.php",
    "onclick" : "RequestContent( 'index.php' ); return false;"
}
Man erkennt unschwer, dass ich den "onclick"-Handler zuweisen möchte. Das ganze etwas dynamisch...
Wie auch immer, versuchsweise habe ich in der Funktion RequestContent mal einfach irgendeinen random Text alert'en lassen. Daher ist mir aufgefallen, dass jQuery beim Anfordern des JSON bei onclick vorbei kommt und diesen Code ausführt. Das möchte ich aber nicht... Da aber jQuery Neuland für mich ist habe ich Schwierigkeiten, dies zu umgehen. Das ausführende Script könnte ich zwar schon abändern, aber das würde die Komplexität des ganzen nur unnötig erschweren, denke ich, und möglicherweise auf Teilgebiete der Homepage spezifizieren. Das ganze soll so universell wie möglich sein, da ich das Script auch gerne in anderen Projekten anwenden möchte.

Ich hoffe, ich habe klar gemacht, was ich möchte und freue mich auf Antworten und Hilfe. ;)

Mit freundlichen Grüßen,


DarkDragon1993


€dith:

Okay, das ganze ist gelöst. Problem war, dass ich versucht habe, dem Element über das Attribut "onclick" einen Handler zuzuweisen. Da jQuery allerdings eine ganze Library mitliefert haben die beiden sich in die Haare gekriegt und gegenseitig ausgelöscht. Da ich in meinem kleinen Script alle Events mit "on" beginne, habe ich das bestehende Script erweitert und die jQuery.bind() und eval() Funktionen zu Hilfe gezogen. Jetzt funktioniert alles Einwandfrei.
 
Zuletzt bearbeitet:
Werbung:
Das ganze ist ein etwas komplizierteres Vorgehen... Die JSON-Datei soll sozusagen die Sprachdatei sein und der hier besprochene Teil sieht so aus:
Code:
"nav" : [
			{
				"class" : "super",
				"children" : {
					"href" : "home.php",
					"onclick" : "SS.ReqCnt( 'home.php' ); return false;",
					"text" : "Home"
				}
			}, {
				"children" : {
					"href" : "projects.php",
					"onclick" : "SS.ReqCnt( 'projects.php' ); return false;",
					"text" : "Projekte"
				}
			}, {
				"children" : {
					"href" : "references.php",
					"onclick" : "SS.ReqCnt( 'references.php' ); return false;",
					"text" : "Referenzen"
				}
			}, {
				"children" : {
					"href" : "about.php",
					"onclick" : "SS.ReqCnt( 'about.php' ); return false;",
					"html" : "Über Uns"
				}
			}, {
				"children" : {
					"href" : "contact.php",
					"onclick" : "SS.ReqCnt( 'contact.php' ); return false;",
					"text" : "Kontakt"
				}
			}, {
				"class" : "super",
				"children" : {
					"href" : "mz/main.php",
					"onclick" : "SS.ReqCnt( 'memberzone.php' ); return false;",
					"text" : "User Zone"
				}
			}, {
				"children" : {
					"href" : "mz/login.php",
					"onclick" : "SS.ReqCnt( 'memberzone.php?action=login' ); return false;",
					"text" : "Login"
				}
			}
		],
wobei das Script dafür sorgt, dass bei "children" die Kinder des Elements mit der ID "nav" angesprochen werden, "text" und "html" sind der Inhalt des Elementes. SS.ReqCnt ist die Funktion.
Wenn nicht gerade im "Script-Handler" anders definiert, wird der jeweilige Wert als Attribut angefügt. Das heißt aus
HTML:
<a href="test.php" onclick="alert('Foo');">Bar</a>
wird ein
HTML:
<a href="home.php" onclick="SS.ReqCnt( 'home.php' ); return false;">Home</a>

Die JSON-Datei fordere ich wie folgt an:
Code:
function ChangeLang( ) {
	currLang = document.getElementById( "language" ).options[ document.getElementById( "language" ).selectedIndex ].value;
	ReqCnt( currPage, function( ) { ReqPrj( lastPrj ); } );
	$.getJSON( domain + "IndexLangs.json", UpdateStaticText );
}

Wie gesagt, das Problem ist eben, das jQuery den JavaScript im onclick-"Handler" ausführt... der String, der dann an das Element angefügt wird, ist nun anscheinend leer, denn es geschieht nichts... Nunja, der Fallback für User, die kein JavaScript unterstützen, wird aktiviert, aber genau das soll es ja nicht. :-|

Noch möchte ich ungerne Dateien oder die Adresse der Homepage raus rücken... Da das ganze noch nicht fertig ist und da Texte stehen, die outdatet sind. :oops:

(Falls das ganze jetzt noch unverständlicher ist, Entschuldigung, ich bin gerade etwas verpeilt... xD)


€dith:
Keine Ahnung, was ich verändert habe, jetzt geht es zwar noch immer nicht, aber das Script wird immerhin nicht ausgeführt. Frage in gewisser weise abgeschlossen...
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben