プロが教えるわが家の防犯対策術!

お世話になります。

以下の構文が記載されたPHPをhtmlからjavascriptにて呼び出してます。
が、うまく広告が表示されずに困っています。
PHPを直接叩き、document.write等を削除したものを
直接htmlに貼り付ければ、広告は表示されます。

広告が表示されない原因としては、adsenseのscript内でinframeを作成しているのですが
そのさいのwidth,heightが0になってしまっているようです。
しかし、なぜその値が渡せていない?のかが解らずハマっています。


<?php
header("Content-type: application/x-javascript");

echo "document.write(\"<div align='center'>\")\n";
echo "document.write(\"<p>\")\n";
echo "document.write(\"<script type='text/javascript'><!--\")\n";
echo "document.write(\"google_ad_client = 'hogehogeID';\")\n";
echo "document.write(\"/* 200*200 */\")\n";
echo "document.write(\"google_ad_slot = 'slotnumber';\")\n";
echo "document.write(\"google_ad_width = 200;\")\n";
echo "document.write(\"google_ad_height = 200;\")\n";
echo "document.write(\"//-->\")\n";
echo "document.write(\"</script>\")\n";
echo "document.write(\"<script type='text/javascript'\")\n";
echo "document.write(\"src='http://pagead2.googlesyndication.com/pagead/show …
echo "document.write(\"</script>\")\n";
echo "document.write(\"</p>\")\n";
echo "document.write(\"</div>\")\n";
?>

よろしくお願い致します。

A 回答 (5件)

ANo.1です。



>PHPにてechoしているのでphpカテゴリに質問しているだけです。

了解しました。そういうことであれば(私は)以降スルーします。JavaScriptカテで質問して「動作する外部JSファイル」を仕上げるのが先だと思いますので。
    • good
    • 0
この回答へのお礼

>JavaScriptカテで質問して「動作する外部JSファイル」を仕上げるのが先だと思いますので。
その方が早そうですね。
技術カテは広く精通している方が多いので期待しましたが
絞って質問したいと思います。

ありがとうございました。

お礼日時:2012/09/25 15:31

ANo.1です。



>>PHPを直接叩き、document.write等を削除したものを
>>直接htmlに貼り付ければ、広告は表示されます。

いやいや「document.write等を削除したもの」ってそれは違うでしょう。「外部JSとして」動くソースは確認出来ているんですかと。下記ソース(提示されたソースが返すものです)を外部JSとして読み込んだら動作するのは確認済みですか?

test.js

document.write("<div align='center'>");
document.write("<p>");
document.write("<script type='text/javascript'><!--");
document.write("google_ad_client = 'hogehogeID';");
document.write("/* 200*200 */");
document.write("google_ad_slot = 'slotnumber';");
document.write("google_ad_width = 200;");
document.write("google_ad_height = 200;");
document.write("//-->");
document.write("</script>");
document.write("<script type='text/javascript'");
document.write("src='http://pagead2.googlesyndication.com/pagead/show …
document.write("</script>");
document.write("</p>");
document.write("</div>");

上記内容をtest.jsとして読み込んで動作しないのであれば、静的な外部JSファイルで返そうがphpで動的に生成して返そうが同じです。それは「JavaScriptとしておかしい」のであって、php云々以前の問題です。

この回答への補足

うーん。伝えるのは難しいですね。

>それは「JavaScriptとしておかしい」のであって、php云々以前の問題です。
質問に「PHPをhtmlからjavascriptにて呼び出してます。」と書いてまして
結果的に表示されないという質問なんです。

php云々以前というよりは
私としてみればPHPだろうとJavaScriptだろうとどっちでも良いんです。
htmlに直書きして出る=JavaScriptが悪さをしているのは明白ですし
値が渡せていない=JavaScriptが悪さをしているのは明白です。
PHPでは何も処理していないので。

ただ、手法としてPHPにてechoしているのでphpカテゴリに質問しているだけです。

ありがとうございました。

補足日時:2012/09/25 14:42
    • good
    • 0

ANo.1です



>>content-typeをtext/plainにして表示させた内容
>上記内容にしても何も表示されないのです・・・

それは「あり得ない」です。そう変更したphpスクリプトにアクセスしていますか(そういう意味で書きましたが・・)。



そもそも提示された内容が外部jsとして動作することは確認できているのでしょうか?

本来、外部jsとして動作することを確認した上で、それを(何らかの動的に生成した部分があるので)phpスクリプト化するという手順のハズです(∴ 提示されたソースに動的な部分が存在しないのが不思議です)。

この回答への補足

何度もありがとうございます。

>それは「あり得ない」です。そう変更したphpスクリプトにアクセスしていますか(そういう意味で書きましたが・・)。
あっ、PHPファイルに直接アクセスすれば表示されています。
最初の質問にも書いてます。
>>PHPを直接叩き、document.write等を削除したものを
>>直接htmlに貼り付ければ、広告は表示されます。


>そもそも提示された内容が外部jsとして動作することは確認できているのでしょうか?
もともとHTML上に記載していたものをPHPファイルに書き、共通化しようというのが
目的で、HTML上で動作確認しているものを書いています。

ちなみに・・・もともとの実行結果が以下になっています。
<div align="center"><p><script type="text/javascript"><!-- google_ad_client = 'hogehogeID'; /* 200*200 */ google_ad_slot = 'hogeID'; google_ad_width = 200; google_ad_height = 200; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show … style="display:inline-table;border:none;height:nullpx;margin:0;padding:0;position:relative;visibility:visible;width:nullpx"><ins id="aswift_6_anchor" style="display:block;border:none;height:nullpx;margin:0;padding:0;position:relative;visibility:visible;width:nullpx"><iframe allowtransparency="true" hspace="0" marginwidth="0" marginheight="0" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!d.body||!d.body.firstChild)){if(h.call){i+='.call';setTimeout(h,0)}else if(h.match){i+='.nav';w.location.replace(h)}s.log&amp;&amp;s.log.push(i)}" vspace="0" id="aswift_6" name="aswift_6" style="left:0;position:absolute;top:0;" frameborder="0" height="null" scrolling="no" width="null"></iframe></ins></ins></p></div>

↓ここに値が渡ってないと思うんですが・・・
height="null" scrolling="no" width="null

補足日時:2012/09/25 12:10
    • good
    • 0

なぜ、単純に文字列を書き出しているだけなのに scho 命令を使用しているのでしょうか。



<?php
header("Content-type: application/x-javascript");
?>
document.write("<div align='center'>");
document.write("<p>");
・・・・・

とするだけでいいと思うのですが。

どうしても echo を使わなければいけない理由があるのであれば、
echo "document.write(\"<div align='center'>\")\n";

echo "document.write(\"<div align='center'>\");\n";
と、全ての document.write の閉じ括弧の後ろに ; を付けるようにしてください。
たぶん ; が無いためJavaScriptの実行時に命令文の区切り位置が分からずエラーになっているのだと思われます。

この回答への補足

ご回答ありがとうございました。
上記どちらもダメでした。

補足日時:2012/09/25 11:17
    • good
    • 0

#headerでのContent-typeはtext/javascriptの方が・・・



とりあえず問題を切り分けてください。content-typeをtext/plainにして表示させた内容を(外部jsファイルとして)保存したものを使ってもダメなら、phpの問題ではありません。

というか、JavaScriptでJavaScriptのソースをdocument.writeする(しかもfunctionでなくそのまま動かす)ってどうなんですかねぇ・・・

この回答への補足

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

>content-typeをtext/plainにして表示させた内容
上記内容にしても何も表示されないのです・・・

ただ、phpファイルを呼び出したhtmlを表示させて
選択範囲のソース表示を行うと、質問内容にあるような状態が確認できます。

おそらく「http://pagead2.googlesyndication.com/pagead/show …」に
IDやサイズを渡しているんだと思うのですが
これがうまく渡っていないんですよね。。

補足日時:2012/09/25 11:21
    • good
    • 0

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