• ベストアンサー

<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部分が間違っているに違いないのですが、どうやって記述すればよろしいでしょうか? よろしくお願いします。

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

  • ベストアンサー
回答No.3

src要素内はJavaScriptではないので、document.write()としても文字列としてしか認識されません。 info.phpにreferrerを渡すのでしたら、 <script type="text/javascript"> var ref = document.referrer ; document.write("<script type=\"text/javascript\" src=\"http://hoge.com.info.php?ref="+ref+"\"></script>"); </script> とする必要があります。

hola1973
質問者

お礼

ありがとうございました。 見事に帰ってくるようになりました。 本当に助かりました。 m(__)m

その他の回答 (2)

回答No.2

><script type="text/javascript" src="http://hoge.com/info.php?ref=' + document.write(document.referrer) + '" charset="Shift-JIS"></script> script要素の内容としてならともかく,src属性内はjavascriptではないと思うので多分ならない。(つまり文字連結演算子としても捕らえられることはない) http://hoge.com/info.php?ref=' + document.write(document.referrer) +' というURLになるだけだと思われる

回答No.1

Windows XP Pro SP2 + ANHTTPD 1.42p + PHP 5.2.3 参考資料 http://homepage1.nifty.com/yito/anhttpd/faq/php5.html 『Webサーバ上に載せたら』 すべてのファイルを同じフォルダに入れて Q3205563-1.htmlへアクセス ==================Q3205563-1.html================= <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Q3204021 テストケース1</title> </head> <body> <p><a href="Q3205563-2.html">ほげ</p> </body> </html> ====================Q3205563-2.html============= <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Q3204021 テストケース1</title> <style type="text/css"> p#hakka{background-color:red;} p#fuga{background-color:green;} </style> <script type="text/javascript"> function init(){ alert(document.referrer); var sc=document.createElement("script"); sc.setAttribute("type","text/javascript"); sc.setAttribute("src","Q3205563-3.php?ref=" + document.referrer); var head = document.getElementsByTagName("head")[0]; head.appendChild(sc); // hoge();をこの地点で実行できないみたいなので,読み込み終わったと思ったら // 赤い部分をクリック } </script> </head> <body onload="init();"> <p>赤い部分をクリック</p> <p id="hakka" onclick="hoge();">ほげ</p> <p id="fuga">ふが</p> <!-- referrerがふがの後に追加される --> </body> </html> ===================Q3205563-3.php===================== <?php $ref = $_GET['ref']; echo "function hoge(){\n"; echo "var fuga = document.getElementById('fuga');\n"; echo "if (fuga.hasChild){\n"; echo "fuga.firstChild.nodeValue +='" . $ref . "';\n"; echo "}else{\n"; echo "fuga.appendChild(document.createTextNode('" . $ref . "'));"; echo "}\n"; echo "}\n"; ?>

hola1973
質問者

補足

返答ありがとうございます。 一番聞きたい部分は、以下の文 <script type="text/javascript" src="​http://hoge.com/info.php?ref='​ + document.write(document.referrer) + '" charset="Shift-JIS"></script> の「'+document.write(document.referrer)+'" 」の文字列結合演算子なのですが、この書き方では、REFERRERを代入して文字列結合しませんでしょうか?

関連するQ&A