2013-04-02 12 views
9

Ich werde das Vorwort mit: „Ich weiß, die schlechte Praxis und eine hässliche Hack (und es tut mir leid), aber ...“Dritte Ebene des Zitats in HTML und JavaScript zu entkommen

I‘ m Verwenden des QuickInfo-Widgets von jQuery TOOL, um eine QuickInfo zu einem HTML-Element anzuzeigen, wenn der Benutzer darüber fährt. Mit diesem Widget fügen Sie dem Attribut title des Elements das HTML der Tooltip hinzu.

Innerhalb dieses HTML habe ich ein Element, an das ich einen Inline-Ereignishandler onclick binden möchte.

Leider bin ich in zu viele Schichten von Anführungszeichen geraten, um einen Parameter an die Funktion zu übergeben, die ich aufrufen möchte.

Ich habe so etwas wie dies:

<div title="<div onclick='myFunction(_____)'>My tooltip content</div>">My element</div> 

Dies funktioniert, wenn ich eine ganze Zahl an myFunction übergeben müssen, da sie nicht einen anderen Satz von Anführungszeichen benötigt. Leider möchte ich eine Zeichenfolge an myFunction übergeben. Wie kann ich diesen String-Parameter weiter umgehen, so dass er den onclick- oder den title-String nicht schließt?

+2

Überprüfen Sie eine ähnliche Frage hier: http://stackoverflow.com/questions/2004168/javascript-escape-quotes – wilsjd

+0

Dank @wilsjd, das ist in der Tat eine funktionierende Lösung. –

Antwort

8

Innerhalb von HTML-Attribute, sollten Sie Anführungszeichen als HTML-Entities kodieren, z.B .:

<div title="This says &quot;Hello!&quot;"> 
    Hello! 
</div> 
+0

Das hat funktioniert. Können Sie erklären, ob dies ein Teil von HTML ist, der es erlaubt, '& quot' als normale Anführungszeichen in einer JavaScript-Funktion auszuführen oder wenn dies etwas Zauberhaftes von jQuery TOOLs ist oder etwas anderes ist? –

+1

Es hat nichts mit JavaScript zu tun. Auf diese Weise würden Sie einem doppelten Anführungszeichen innerhalb eines doppelt zitierten HTML-Attributs entkommen. Es ist vergleichbar mit etwas wie "alert" ("Das sagt \" Hallo \ "") "in JavaScript. –

+0

Genial, danke. – Ansjovis86

0

ich in der Lage war, eine Lösung für mein spezielles Problem zu finden. Ich bin mir nicht sicher, ob dies im allgemeinen Fall funktioniert oder ob jQuery TOOLs etwas Magisches tut, um meine Zeichenkette zu enteascape, aber ich endete mit &quot; und es wurde in gültiges Javascript ausgewertet, das ausgeführt wurde.

Etwas wie folgt aus:

<div title="<div onclick='myFunction(&quot;_____&quot;)'>My tooltip content</div>">My element</div> 

Ich verstehe nicht wirklich, wie dies ehrlich zu sein arbeitet. Würde lieben, wenn jemand klären könnte, welcher Teil des Prozesses diese &quot; s in tatsächliche funktionale Anführungszeichen ändert.