• ベストアンサー

JavaScriptでエスケープ。<script

JavaScriptで、下記文字列(<script~</script>)を変数に入れ、処理後にdocument.writeしたいです。 <script type="text/javascript" src="http://hoge.jp/s/"></script> どのようにエスケープしたら良いでしょうか?

  • re97
  • お礼率80% (601/744)

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.3

エスケープ不要なオススメ記法 var s = document.createElement('script'); s.src = 'http://hoge.jp/s/'; s.type = 'text/javascript'; // 処理後 document.head.appendChild(s);

re97
質問者

お礼

回答ありがとうございました。 こういう便利な方法があるんですねー

その他の回答 (3)

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.4

apply を忘れてました。。。 String.fromCharCode( を String.fromCharCode.apply( に変更して下さい。

re97
質問者

お礼

補足ありがとうございますー

  • itu1989
  • ベストアンサー率44% (37/83)
回答No.2

ダブルクォーテーションをエスケープしたら変数へ格納できると思います。 var str = "<script type=\"text/javascript\" src=\"http://hoge.jp/s/\"></script>";

re97
質問者

お礼

回答ありがとうございましたー

  • gorusura
  • ベストアンサー率59% (25/42)
回答No.1

document.write(String.fromCharCode(null, [60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,115,114,99,61,34,104,116,116,112,58,47,47,104,111,103,101,46,106,112,47,115,47,34,62,60,47,115,99,114,105,112,116,62])); ただし、document.write で表示しても読み込まれないので、注意してください。 普通は、http://www.tohoho-web.com/js/string.htm エスケープが必要な文字だけエスケープします。

re97
質問者

お礼

回答ありがとうございました。 >fromCharCode ・初めて知りました ・これ凄いですねー

関連するQ&A

  • ブラウザによるCSSの切替スクリプト

    ブラウザによるCSSの切替スクリプトを作りましたが上手くいきません。 ====css.js====================================================== function browserCheck(){ //変数myBrowにユーザの環境を代入 myBrow = navigator.userAgent; //変数myBrowに文字列Operaが入っていた場合(Opera)の処理 if (myBrow.match(/Opera[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Opera.css" charset="Shift_JIS">"); //Operaの処理 //変数myBrowに文字列MSIEが入っていた場合(IE)の処理。 //Operaにも文字列MSIEが入っているため、Operaの処理の後に行います。 else if (myBrow.match(/MSIE (\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="MSIE.css" charset="Shift_JIS">"); //MSIEの処理 //変数myBrowに文字列Firefoxが入っていた場合の処理。 else if (myBrow.match(/Firefox[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Firefox.css" charset="Shift_JIS">"); //Firefoxの処理 //変数myBrowに文字列Netscapeが入っていた場合の処理。 else if (myBrow.match(/Netscape[\/\s](\d\.\d+)/))     document.write("<link rel="stylesheet" type="text/css" href="Netscape.css" charset="Shift_JIS">"); //Netscapeの処理 //上記以外の処理 else myBrow = "unknown"; //それ以外のブラウザ     document.write("<link rel="stylesheet" type="text/css" href="unknown.css" charset="Shift_JIS">"); //それ以外のブラウザの処理 } ================================================================ <html> <head> <script language="JavaScript" src="css.js"></script> <Script language="JavaScript"><!-- browserCheck(); //--></Script> </head> </html> どこか間違っているでしょうか? ご回答、宜しくお願い致します。

  • 外部javascriptファイルをjavascriptから動的に呼び出したい

    呼び出し元のURLによって動作を変えたいJAVASCRIPTがあります。 普段外部のJAVASCRIPTを呼び出すときはよくこうするのですが <script type="text/javascript" src="js.php?key=url"></script> これでは「key=url」が固定になってしまいます。そこで下記のように <script> var commentname=document.URL; var str=encodeURIComponent(commentname); document.write('<script type="text/javascript" src="read.php?key=',str,'"><\/script>'); </script> document.writeを使って無理やり外部Javascriptファイルの呼び出しスクリプトを書いているのですが、この書き方はどうもエレガントさにかけるというか、いまいち気に入りません。 もっとほかに良い方法がある気がするのですが、調べてもわかりませんでした。おわかりになる方がいらっしゃったらご教示頂けないでしょうか。

  • Operaにおけるscriptのエスケープ?

    ボタンを押したらjQueryが使えるページを新規で開くように以下のようなソースを書いてみました。 ----------------------------------------------------------------------------------------- <input type="button" value="test" onclick="test()" /> <script type="text/javascript"> function test(){ var newWindow=window.open(); newWindow.document.open(); newWindow.document.writeln('<p>test</p>'); newWindow.document.writeln('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"><\/script>'); newWindow.document.writeln('<p>test</p>'); newWindow.document.writeln('<p>test</p>'); newWindow.document.writeln('<p>test</p>'); newWindow.document.close(); } </script> ----------------------------------------------------------------------------------------- ところが、これだとOperaではうまくいきません。 「要素を検証」してみたところ、</script>以下がwritelnされていないようです。 src="~" の~部分を消してみると以下はきちんと書き込まれるのですが、それだとjsファイルを読み込むことができません。 </script>以外にもエスケープさせねばいけない所があるのでしょうか? それとも原因は他にあるのでしょうか? 教えていただければありがたく思います。 よろしくお願いします。

  • このjavascriptは何をしているのでしょうか

    <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-7994748-1"); pageTracker._trackPageview(); } catch(err) {} </script> 今の知識ではこのスクリプトがどんな処理をしているのか読めません。 (出典はcanvasとprocessing.jsのデモページのソースです) ご回答よろしくお願いします。

  • <script type="text/javascript" src= について

    よろしくお願いします。JavaScriptは、ほとんど触ったことがなく、現在記述がわからず困って今sう。 htmlファイルの中から、外部ファイルに引数(referre)をつけて渡したく思います。で以下のようにやってみたのですが、 index.html <script type="text/javascript" src="http://hoge.com/info.php?ref=' + document.write(document.referrer) + '" charset="Shift-JIS"></script> info.php $ref = $_GET['ref']; echo document.write('$ref'); info.phpから返ってくる答えは「' document.write(document.referrer) ' 」です。 index.html内の JAVASCRIPT部分が間違っているに違いないのですが、どうやって記述すればよろしいでしょうか? よろしくお願いします。

  • scriptを2つ動かすために

    ライトボックスと、時間が経つとNEWマークが自動で消えるスクリプトを2ついれました。 すると、NEWマークの方だけが稼動して、ライトボックスが動きません。 自分で調べた結果、統合しないといけないというのはわかったのですが、やり方が…。。。 お力ください!(>_<) <!-- NEWマーク▼ --> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.newmark.js"></script> <script type="text/javascript"> /* <![CDATA[ */ $(document).ready(function(){ $(".newmark").newmark({ past: 240, icon: "<img src='images/new.gif' alt='new'>" }); }); $(document).ready(function(){ $(".newmark2").newmark({ past: 240, icon: "<img src='img/new2.gif' alt='new'>" }); }); /* ]]> */ </script> <!-- NEWマーク▲ --> <!-- #header ライトボックス --> <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /> <script src="js/prototype.js" type="text/javascript"></script> <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script> <script src="js/lightbox.js" type="text/javascript"></script> <style type="text/css"><!-- #outerImageContainer { -moz-border-radius-topleft:10px; -moz-border-radius-topright:10px; } #imageDataContainer { -moz-border-radius-bottomleft:10px; -moz-border-radius-bottomright:10px; } --></style> <style type="text/css"> a:link {text-decoration:none;} a:visited {text-decoration:none;} a:active {text-decoration:none;} a:hover {text-decoration:none;} </style> <!-- #header ライトボックス -->

  • 外部リンクについて質問です。

    通常のリンクは下のような感じで外部から呼び出してきますが、 <script type="text/javascript" src="1.js"></script> 例えば、変数Formにアドレスが代入してある場合どのようにsrcに記述したらいいのでしょうか? document.write(Form); で確認すると、ちゃんと「1.js」と出ます。 FormはJavaScript内での変数です。 色々試して、 <script type="text/javascript" src="Form"></script> <script type="text/javascript" src=Form></script> など、他にもいくつか試しましたがうまくいきません。 代入値をアドレスとして使えないのでしょうか? もう完全に行き詰って全く分かりません。 すみませんが分かる方よろしくお願いします。

  • ページは表示されたけれど、エラーが出ます。

    過去の質問を調べたのですが、見つけられなかったので、質問させてください。 自社サイトのページを開くと、ステータスバーに 「ページが表示されましたが、エラーがあります。」と表示されました。 エラーの詳細は下記のとおりです。 ライン:18 文字:51 エラー:')'がありません コード:0 ソースに問題があるのかと思ったのですが、 下記がそのソースです。 <SCRIPT language="javascript" type="text/javascript" src="../js/common_lib.js"></SCRIPT> <SCRIPT type="text/javascript" src="../js/css_junction2.js"></SCRIPT> <SCRIPT language="JavaScript"> <!-- document.write("<img src='http://700700.jp/acc/acclog.cgi?"); document.write("referrer="+document.referrer+"&"); document.write("width="+screen.width+"&"); document.write("height="+screen.height+"&"); document.write("color="+screen.colorDepth+"' alt="">"); // --> </SCRIPT> どこをどう直せばよいのかよくわからないので、 もしお分かりの方がいらっしゃいましたら、 お教えいただけますでしょうか? よろしくお願いいたします。

  • JavaScript のdocument.writ

    JavaScript で以下のような感じでdocument.write内にスクリプトを記述させたいのですが、うまくいきません。 document.write(“<script type="text/javascript" language="javascript">var aa_conf = {site:458,frame:13,width:125,height:125,color:["ffffff","FFFFFF","2200CC","F25D5D","671F28"],host:'aa.aa.jp',ver:1.1};</script><script type="text/javascript" language="javascript" src=http://aaa.com/a.js charset="utf-8"></script>”); \を”の前にいれたり、<script>を二行に分けたり、いろいろしてみたのですが、解決しません。 よろしくお願いします。

  • ブログ上で複数のjavaスクリプトから2つのjavaスクリプトをランダムに表示させたい

    ブログ上に、複数のjavaスクリプトからランダムに2つのjavaスクリプトを選んで表示させたいのですが、コードがわからないので教えていただきたいです。選ばれた二つは被らないようにしたいです。 使用したいjavaスクリプトのコードは <script type="text/javascript" charset="euc-jp" src="○○1"></script> <script type="text/javascript" charset="euc-jp" src="○○2"></script> <script type="text/javascript" charset="euc-jp" src="○○3"></script> のようになっています。 javaを使って画像や文字をランダムに表示する方法はあったので応用しようとしたのですがうまくいきませんでした。 よろしくお願いします。

専門家に質問してみよう