dポイントプレゼントキャンペーン実施中!

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

よろしくお願いします。

A 回答 (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>
とする必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/07/30 11:48

><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になるだけだと思われる
    • good
    • 0

Windows XP Pro SP2 + ANHTTPD 1.42p + PHP 5.2.3


参考資料
http://homepage1.nifty.com/yito/anhttpd/faq/php5 …

『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.dt …
<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.dt …
<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";
?>

この回答への補足

返答ありがとうございます。

一番聞きたい部分は、以下の文

<script type="text/javascript" src="​http://hoge.com/info.php?ref='​ + document.write(document.referrer) + '"
charset="Shift-JIS"></script>

の「'+document.write(document.referrer)+'" 」の文字列結合演算子なのですが、この書き方では、REFERRERを代入して文字列結合しませんでしょうか?

補足日時:2007/07/28 07:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!