Question

<document.write("<SCR"+"IPT TYPE='text/javascript' SRC='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'><\/SCR"+"IPT>");

Je dois échapper à la chaîne ci-dessus pour pouvoir ajouter le tout à un StringBuilder, mais jusqu'à présent, il me manque quelque chose car la terminaison de chaîne n'est pas correcte ...

Était-ce utile?

La solution

string x = @"<document.write(""<SCR""+""IPT TYPE=""'text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");";

Le préfixe @ facilite l’échappement. Il vous suffit de tourner chaque " dans "".

Vous trouverez votre programme beaucoup plus facile à gérer si vous stockez le code JavaScript dans un fichier externe. Je suppose que vous utilisez StringBuilder pour pouvoir mélanger des bits de script constant avec quelques valeurs dynamiques? Vous pouvez l'écrire dans un fichier mais mettre des échappements comme celui-ci pour les valeurs dynamiques:

var fromCSharp = {0};

Ensuite, au moment de l'exécution, chargez le fichier JS et attribuez-le à string.Format en tant que chaîne de format, ainsi que les valeurs pour remplacer chaque occurrence de {0}, {1}, etc. Il vous suffit de charger la chaîne de format à partir de le fichier une fois et conservez-le en cache.

De même, si les valeurs que vous insérez dans le code JavaScript sont elles-mêmes des chaînes de caractères, vous devrez les échapper conformément à la syntaxe JavaScript.

Autres conseils

Vous devriez essayer quelque chose comme ceci:

@"<document.write(""<SCR""+""IPT TYPE='text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");"

Lors de la préfixation d'un littéral de chaîne avec @, la seule chose à faire est de doubler le caractère " caractère.

J'espère que cela vous aidera.

La chaîne au début est ce que je veux exactement ... (Je ne mélange pas JavaScript avec C # - il me suffit d'ajouter une chaîne à C # StringBuilder qui, par coïncidance, contient du JavaScript)

C'est un script externe que je dois mettre sur une page, à l'aide d'un StringBuilder (pour diverses raisons).

Je n'ai aucun moyen de savoir si des modifications apportées au script feront échouer le script. Je dois donc l'inclure tel quel ...

Il ne s’agit que d’une ligne sur l’ensemble du script, mais la plupart des autres lignes que j’ai réussi à échapper correctement sont incluses ...

Je pense que vous mélangez les notions de JavaScript et de C # . Pouvez-vous s'il vous plaît nous dire la chaîne que vous êtes chaîne que vous essayez d'atteindre ...

par exemple

window.location.protocol.indexOf ('https:') est JavaScript

mais vraisemblablement

gDomain et gDcsId

sont des variables de votre méthode C #

peut-être ceci:

"<SCRIPT TYPE='text/javascript' SRC='"+"http"+"(window.location.protocol.indexOf('https:')==0?'s':'')"+"://" + gDomain + "/"+ gDcsId+ "/wtid.js"+"'></SCRIPT>")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top