0

これが可能かどうかはわかりませんが、この状況に対するフロントエンドの解決策を見つけようとしています。

JavaScript変数を、バックエンドJavaコードが入力された動的タグに設定しています。

var myString = '@myDynamicContent@';

ただし、出力のコンテンツにキャリッジリターンが含まれる場合があります。これはコードを壊します:

var mystring = '<div>
                Carriage Return happened above and below.
                </div>';

とにかくフロントエンドでこの問題を解決できますか?または、JavaScriptが実行される前に動的タグが実行されるため(したがって、スクリプトはその時点で壊れているため)、スクリプトで何かを行うには遅すぎますか?

4

5 に答える 5

1

私のJSはクリーンアップできると確信しています(これは楽しい問題だと思っただけです)が、JSのコメントを検索できます。

あなたの JS が次のようになっているとしましょう (コメントにタグを追加したことに気付いたので、正しいタグを取得していることがわかります。また、テスト用に div があります):

<script id="testScript">
/*<captureMe><div>
  Carriage Return happened above and below.
  </div>
*/
var foo = 'bar';
</script>
<div id='test'>What do I see:</div>

これを使用してコメントを取得します。

var something = $("#testScript").html();
var newSomething = '';
newSomething = something.substr(something.indexOf("/*<captureMe>")+13);
newSomething = newSomething.substr(0, newSomething.indexOf("*/"));
$('#test').append('<br>'+newSomething);  // just proving we captured the output, will not render returns or newline as expected by HTML

技術的には、それは機能します:)、スクリプト-スクリプト...

チャーブ

于 2012-08-03T15:42:15.443 に答える
1

\JavaScript は、行末にバックスラッシュ ( ) を付けることで、複数行にまたがる文字列をサポートします。次に例を示します。

var myString = 'foo\
bar';

したがって、サーバー側の変数に書き込むときに Java 置換を実行できるはずです。

var myString = '@myDynamicContent.replaceAll("\\n", "\\\\n")@';
于 2012-08-03T16:08:54.217 に答える
0

@Charbs の回答から構築すると、スクリプト タグに別の MIME タイプを指定すると、JavaScript コメントを回避できるため、ブラウザーはそれを JavaScript として評価しようとしません。

<script id="testScript" type="text/notjs" style="display:none">@myDynamicContent@</script>

そして、次のように (jQuery を使用して) 取得します。

var myString = $('#testScript').text();
于 2012-08-03T17:29:56.887 に答える
0

私には、テンプレート エンジンを使用する代わりにトークンの置換を行っているように見えます。トークンの置換が好きな場合は、同様のコードが作成されるため、Snippetoryも使用できます。ただし、多くの追加機能があります。使用する

var myString = '{v:myDynamicContent enc="string"}'

作成します

var mystring = '<div>\r\n          Carriage Return happened above and below.\r\n                </div>'

したがって、問題を解決します。ただし、コードビハインドも変更する必要があります。

于 2012-08-03T20:57:02.893 に答える
0

\nand/or\r\\nand/orにそれぞれ置き換え\\rます...ただし、サーバー側の言語 (この場合は Java) で行う必要があります。JavaScript ではできません。

于 2012-08-03T15:04:08.090 に答える