2009-10-29 4 views
0

Comment dois-je écrire une déclaration en Java pour produire JavaScript dans une page<a> problème de la balise tout en générant javascript via le code java

out.write("document.write('< a href='str'> '+str.slice(beg+1,end)+' </a>');"); 

afin qu'il create en JavaScript

document.write("< a href=' "+str+" '> "+str.slice(beg+1,end)+" </a>"); //< a 

et la lien ira à la page dont l'adresse est stockée dans str

actuellement il prend la valeur de href comme str et pas la valeur stockée dans str ie il cherche la page str

+0

Je crois qu'il ne devrait pas y avoir d'espace entre '<' et 'a'. Il devrait juste être '

+0

ya que je sais ... mais le problème est si j'écris

Répondre

1

Vous ne fermez pas le tag <a>!

document.write("<a href='" + str + "'>" + str.slice(beg+1, end) + "</a>"); 
+0

Je l'ai fermé ........ –

+0

Seulement maintenant vous avez ajouté le formatage de code – Eric

0
out.write("document.write('<a href='str'> '+str.slice(beg+1,end)+' </a>');"); 

Aïe, vous avez quatre niveaux de codage de chaîne ici - pas étonnant que cela vous confondre. Vous avez une chaîne de texte à l'intérieur d'un nœud de texte HTML dans un littéral de chaîne JavaScript à l'intérieur d'un bloc HTML <script> dans un littéral de chaîne Java.

Il est vraiment préférable d'éviter de faire ce genre de choses car il est si facile de se tromper. Il vous manque + pour joindre str à la chaîne à l'intérieur de la valeur d'attribut; si str contient un < ou & vous avez un problème dû à l'incorporation en HTML (pouvant entraîner des failles de sécurité de script intersite); si str contient un espace ou des guillemets, vous avez un problème dû à l'incorporation dans une valeur d'attribut; la séquence est </ HTML invalide dans un bloc <script> ...

Alors que vous pouvez résoudre ce problème en piratant vos propres fonctions d'échappement de chaîne, je dirais que vous êtes mieux d'utiliser les fonctions qui ne concernent pas les chaînes bodging ensemble :

out.write(
    "var link= document.createElement('a');\n"+ 
    "link.href= str;\n"+ 
    "link.appendChild(document.createTextNode(str.slice(beg+1, end)));\n"+ 
    "document.getElementById('foo').appendChild(link);\n" 
); 

foo est l'élément dans lequel vous souhaitez que le lien apparaisse.

Questions connexes