2017-02-02 14 views
1

スクリプトタグの一部として、次の変数をhtml内に追加するにはどうすればよいですか?Javascriptスクリプト要素に文字列を動的に追加する

var x = '-----BEGIN CERT\nMIIDvTCCAqWgAsdfsdfTAktS\nMR4wHAYDVQQKExVTb2Z0Zm9ydW0gQ29yc45656b24xHjAcBgNVBAsTFVNlY3Vy\naXR5IFJORCBEaXZpc2lvbQQKDAhq\ncG1vcmdhbjER\n-----END CERT-----\n;'; 

以下のコードで無効なトークンエラーが発生しました。

var script = document.createElement('script'); 
       script.type = 'text/javascript'; 
       script.innerHTML = "var x = '-----BEGIN CERT\nMIIDvTCCAqWgAsdfsdfTAktS\nMR4wHAYDVQQKExVTb2Z0Zm9ydW0gQ29yc45656b24xHjAcBgNVBAsTFVNlY3Vy\naXR5IFJORCBEaXZpc2lvbjEcMBoGA1UEAxMTU29mdGZvcnVtIFB1YmxpYyBDQTE\nODQzMzhaFw0yMj45645gNVBAYTAktSMREwDwYDVQQKDAhq\ncG1vcmdhbjER\n-----END CERT-----\n;';"; 
       $("body").append(script); 
+0

あなたは以下のようにTemplate literals表記を使用することができ、文字列でracter \nあなたはjavascriptではないものを設定しようとしていますが、javascriptの指定された型です。だから... –

+0

これはJavascript – testndtv

答えて

1

キャリッジリターンをエスケープする必要があります。また、@ maxzoomが示唆するように、おそらくinnerHTMLではなくinnerTextを使用したいと思うでしょう。ここで

var script = document.createElement('script'); 
 
    script.type = 'text/javascript'; 
 
    script.innerHTML = "var x = '-----BEGIN CERT\\nMIIDvTCCAqWgAsdfsdfTAktS\\nMR4wHAYDVQQKExVTb2Z0Zm9ydW0gQ29yc45656b24xHjAcBgNVBAsTFVNlY3Vy\\naXR5IFJORCBEaXZpc2lvbjEcMBoGA1UEAxMTU29mdGZvcnVtIFB1YmxpYyBDQTE\\nODQzMzhaFw0yMj45645gNVBAYTAktSMREwDwYDVQQKDAhq\\ncG1vcmdhbjER\\n-----END CERT-----\\n;'; console.log(x);"; 
 
    $("body").append(script);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

インスペクタから、それはアクションで働いている...

enter image description here

+0

Thx ... var x =が印刷されていないことがわかりました – testndtv

+0

Chrome、FF、Edgeで "run code snippet"を試してみましたが、 "cert"はプリンタ/ログに記録されています私のためにここに。誰か? – JonSG

0

あなたはこの方法を試してみてください:

var x = '-----BEGIN CERT\nMIIDvTCCAqWgAsdfsdfTAktS\nMR4wHAYDVQQKExVTb2Z0Zm9ydW0gQ29yc45656b24xHjAcBgNVBAsTFVNlY3Vy\naXR5IFJORCBEaXZpc2lvbjEcMBoGA1UEAxMTU29mdGZvcnVtIFB1YmxpYyBDQTE\nODQzMzhaFw0yMj45645gNVBAYTAktSMREwDwYDVQQKDAhq\ncG1vcmdhbjER\n-----END CERT-----\n;' 

var script = `<script type="text/javascript">${x}</script>` 

$("body").append(script); 
1

組み込み処理するには新しいラインチャーのような表現ブラウザで生成されたソースを表示すると、スクリプトが要素に存在している

var script = document.createElement('script'); 
 
script.type = 'text/javascript'; 
 
var content = "var x = `-----BEGIN CERT\nMIIDvTCCAqWgAsdfsdfTAktS\nMR4wHAYDVQQKExVTb2Z0Zm9ydW0gQ29yc45656b24xHjAcBgNVBAsTFVNlY3Vy\naXR5IFJORCBEaXZpc2lvbjEcMBoGA1UEAxMTU29mdGZvcnVtIFB1YmxpYyBDQTE\nODQzMzhaFw0yMj45645gNVBAYTAktSMREwDwYDVQQKDAhq\ncG1vcmdhbjER\n-----END CERT-----\n`;"; 
 
content += "console.log(x);"; 
 
script.innerHTML = content; 
 
$("body").append(script);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

enter image description here

+1

正しい結果を得るには、 "\ n"ではなく "\ n"を使用する必要があるかもしれないと思います。 – JonSG

+0

スニペットの出力をご覧ください。私はまた、問題なしでスタンドアロンテストを実行しました。 – MaxZoom

+0

作成されたスクリプトブロックを見て、それを「\ n」ではなく「\\ n」で作成したものと比較してください。私はそれが天候に沸騰するか、または結果のスクリプトブロックがエスケープされるかどうかを望んでいないと思います。私の推測では、彼らはそうですが、そうでなければあなたの解決策はそのままです。 – JonSG

関連する問題