JavaScriptを使用して参照元URLを記録する方法について

このQ&Aのポイント
  • アクセスログを作成する際に、JavaScriptを使用して参照元URLを記録したいがうまくいかない。そのため、<IMG~タグを使用してASPを呼び出す方法を考えたが、ASPで戻り値を指定する方法がわからない。
  • アクセスログを作成する際に参照元URLを記録したいが、JavaScriptを使用してうまくいかない。そこで<IMG~タグを使用してASPを呼び出して戻り値に画像を指定する方法を考えたが、ASPで戻り値を指定する方法がわからない。
  • アクセスログを作成するためにJavaScriptを使用して参照元URLを記録したいが、うまくいかない。そこで<IMG~タグを使用してASPを呼び出して戻り値に画像を指定する方法を考えたが、ASPで戻り値を指定する方法がわからない。
回答を見る
  • ベストアンサー

アクセスログ

お世話様です。 勉強を兼ねて「アクセスログ」を作成しています。 TOPページは「index.htm」で作成し、ログ書込み部分はASPで作成しています。JAVAScriptを使用して参照元URLを記録したいと思っておりますが、なかなか上手くいきません。 そこで、苦肉の策で考えたのが <BODY> ~略~ <SCRIPT language="JavaScript"> <!-- url = "<IMG src='./analyzer.asp?url=" ; url = url + document.referrer + "'>"; document.write(url) //--> </SCRIPT> ~略~ </BODY> とまぁ、<IMG~タグでASPを呼び出して戻り値に画像を指定する方法です。 ここからが本題、 「analyzer.asp」でログを記録する所までは良いのですが ASPで「戻り値」を指定する方法がわかりません。 イメージ的にはCGIなどでカウンターの表示をするのと同じような感じを持っていたのですが・・・ 皆様、ご教授下さい。お願い致します。

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

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.2

ASPでアクセスログを記録して、画面には任意の画像を表示させたいということでしょうか? 画像をASPで出力する最低限のサンプルで良ければこんな感じで出来ます。(要・BASP21) <%@ LANGUAGE="VBScript" %> <% Option Explicit Dim strImageFile Dim objBasp Dim binaryImage strImageFile = "images/banner.gif" strImageFile = Server.MapPath( strImageFile ) Set objBasp = Server.CreateObject("basp21") binaryImage = objBasp.BinaryRead( strImageFile ) Set objBasp = Nothing Response.Buffer = True Response.ContentType = "image/gif" Response.BinaryWrite binaryImage Response.End %> 参考になれば幸いです。

Chika-F
質問者

お礼

有難う御座います。 早速やってみましたらパーフェクトです。 やりたい事が見事に出来て感激しています。 本当に勉強になりました。 有難う御座いました。

その他の回答 (1)

  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.1

ASPに戻り値は無いのでは? カウントしたいページをHTMLでは無くASPにして ACCESSなりなんなりに insert into でレコードこさえて環境変数と日付を記録するか、カウントをUpdateするかですねぇ。 私は前者で自作アクセス解析スクリプト作りました。 こうするとユーザーにはソースも見えない。

Chika-F
質問者

お礼

ごめんなさい。 質問の仕方が適切ではなかったですね。 TOPページは敢えてASPにしたくなかったのです。 ログを記録する方は問題なく出来ていたのですが HTMLからASPを呼ぶ手段として<IMG>タグを使用しました。 その為、ASPから何らかの画像を出力しないと 「×」マークが出てしまう為、苦心していました。

関連するQ&A

  • 画面が真っ白になるのはどうして?

    アクセス解析を設置する際、javascriptを説明どおりに入れたのですが、保存してhtmlを見ると画面が真っ白になってしまいました。 下記のような内容です。 <script language="JavaScript"><!-- document.write('<img src="log4.cgi?' + document.referrer + '" width=1 height=1>'); // --></script><noscript><img src=log4.cgi width=1 height=1></noscript> 注意点: ・「<!--」の次は必ず改行する。 ・「log4.cgi」の部分は、log4.cgiへのURLを書く。 →「public_html/」に「log4.cgi」を転送したときこのままで結構です。 ・「document ... height=!>');」までは1行に書く。 ・<Body>以降に書く。 ということです。 何が原因がおわかりの方教えてくださいませ。

  • フレームページからログを取る方法

    こんにちは。 JavascriptとCGIを利用して、簡単なアクセスログを取っています。 サイトの各ページの<BODY>~</BODY>の中で外部のJavascriptを呼びだし、 そのjavascriptの中で、<IMG src= ・・・・>でCGIを呼び出してファイルに書き込んでます。 ところが、フレームページだと、BODYタグが無いので、framesetタグの中のloadイベントで なんとかしようと思ったのですが、Javascript自体は呼べるものの、 <IMG src=・・・>などとしているため、エラーになってしまいます。 フレームページからログを取る良い方法があれば是非教えてください。お願いします。

    • ベストアンサー
    • HTML
  • アクセスログCGIをimgタグで埋込むとブラウザに×表示されてしまう

    アクセスログのCGIスクリプトを実行させるための埋め込みタグとして以下のように <img src="http://hogehoge.com/accesslog.cgi?url=http://hogehoge.com/index.html"> imgタグで指定するように指示されているのですが、imgタグで指定するとブラウザで表示したときに×が表示(画像イメージが存在しないときの状態)されてしまいます。 これを回避させる、良い方法はありますでしょうか?

  • これだけ外部スクリプトで動かない

    <script type="text/javascript"> <!-- kikan=4; function new4W(writeday){ if((new Date()-new Date(writeday))/(24*60*60*1000)<=kikan) document.write("<img src='/img/ic/new036.gif'>"); } // --> </script> <script>new4W("2008/03/16")</script> 指定した日付(この場合 2008/03/16)から4日間、 画像を表示させるものです。<body>~</body>でちゃんと動きます。 <SCRIPT LANGUAGE="JavaScript" SRC="http://~/js/newmark.js"></SCRIPT> <script>new4W("2008/03/16")</script> 外部スクリプトにしました。そのまま内容を移行しましたが動きません。 呼び出しの部分を <head>~</head>に挿入しても、それでも動きません。 指定を絶対パス・相対パスいづれでも動きません。 これとは別に「3月18日は○○さんの誕生日です」なる JavaScript を 外部から引いてますが、こちらは問題なくできています。 指定URLも直接移動で内容が表示されるのを確認しました。 どうかご指導いただければと思います。よろしくお願いします。

  • JavaScriptのwindowcloseとボタンのロールオーバーの組み合わせ方

    いまHPを作成中です。 そのなかでクリックすると、指定された大きさで表示される別ウィンドウがあります。 そのウインドウに次の2つのJavaScriptを使いたいのです。 ひとつひとつなら出来るのですが、二つを組み合わせるとどう書いていいのかわかりません。 しかも、ふたつともhead内に書き込むにはどうしたらいいですか? 1、ウインドウに「閉じる」ボタンを付けたい 2、そのボタンはロールオーバー効果を使ってマウスがオーバーのときはボタンが変化するよう、別のgifを表示したい 1,2の詳しい内容です。 1<a href="javascript:window.close();"></a> 2<head> <title>ロールオーバーイメージ</title> <script language="JavaScript"> <!-- function changeImage1(){ document.myimg.src="img2.gif"; } function changeImage2(){ document.myimg.src="img1.gif"; } // --> </script> </head> <body> <p> <a href="javascript:;" onMouseOver="changeImage1()" onMouseOut="changeImage2()"><IMG src="img1.gif" name="myimg" border=0></a> </p> </body>

  • フレームページでアクセス制限したい場合

    ある特定のURLからのアクセスを、どこかのページに飛ばすには、 <Script Language="JavaScript"> <!-- reff=document.referrer; if(reff.indexOf('相手のURL')!=-1){ location.replace('飛ばす先のURL') } //--> </Script> なのですが、 フレームページの<body>と</body>の間に設置したところ、 飛ばすことが出来ず、普通に表示されてしまいます。 この場合どうすれば、いいのでしょうか? ご意見頂けましたら幸いです。

  • appendChildをしても表示されない

    javascriptでどうしてもわからなかったので質問させて下さい。 'http://weather.livedoor.com/plugin/common/forecast/13.js'というスクリプトを読み込んで表示させたいのですが、IEでは表示されません。firefoxでは正常に表示されます。 IEでも表示する方法はあるのでしょうか。何が悪いのでしょうか。教えてください。 以下のページで作成しています。 http://www.ajaxblogparts.com/blogparts/simple.html   <body> <script type="text/javascript"> url = 'http://weather.livedoor.com/plugin/common/forecast/13.js'; var script = document.createElement('script'); script.type = 'text/javascript'; script.charset = 'euc-jp'; script.src = url; document.body.appendChild(script); </script> </body>

  • JavaScriptから別フレームのasp出力ドキュメントにアクセスできません。

    まず以下のソースをご覧ください。 [index.html] <html> <frameset cols=50%,*> <frame src="frame01.html"> <frame src="frame02.asp"> </frameset> </html> [frame01.html] <html> <head> <script type="text/javascript"> <!-- function insertText(){ parent.frames[1].document.myform.mytext.value = "テスト"; } // --> </script> </head> <body> <form> <input type="button" value="出力" onclick="insertText()"> </form> </body> </html> [frame02.aspにより出力されたソース内の記述] <html> <head> </head> <body> <form name="myform"> <input type="text" name="mytext"> </form> </body> </html> frames[0]のボタンを押すとframes[1]のテキストフォームに"テスト"が出力されるようにしています。 frame02.aspが静的なHTMLだった場合は問題なく動作するのですが、aspによって出力されたhtmlではエラーになってしまいます。 これはフォームに対する操作だけでなく、document.write()等のあらゆる操作に該当します。 当方はaspのことは全くわからず、またこのaspの中身を書き換える権限もありません。あくまで出力された結果に対して動的に操作を加えたいのです。 原因としては次のようなものを考えました。 ・aspドキュメントのパスに対してアクセス権限が無い。 ・aspもしくはCGIの実行によってもたらされたHTMLに対してはスクリプトは動作しない。 ・実際の出力結果のヘッダにはJavaScriptが記述されており、これが何らかの影響を及ぼしている。 ・事前にスクリプトから操作を受けないようにプロテクトされている。 ご助力を願えれば幸いです。

  • 連続したonclick

    <table> <tr> <td><img src="a001.jpg" onclick="document.body.style.backgroundImage = 'url(a001.jpg)'"></td> <td><img src="a002.jpg" onclick="document.body.style.backgroundImage = 'url(a002.jpg)'"></td> <td><img src="a003.jpg" onclick="document.body.style.backgroundImage = 'url(a003.jpg)'"></td> </tr> </table> ******************************* 1 背景画像の切り替え画像サンプルをつくりました。 これが何十行も連続します。 CSSみたいに同じ内容が重複するときにclassで分類するみたいに、 Javascriptでも簡素化する方法はないでしょうか? <HEAD></HEAD>内には <meta http-equiv="Content-Script-Type" content="text/javascript"> しか書いていません。(Javascriptは初心者です) 2 document.body.style.backgroundColor='#ffffff'; backgroundImageとかbackgroundColorの 後方のImageとかColorの頭文字は大文字でも良いのでしょうか?

  • jqfloat.jsを複数の画像に適用したい

    javascriptで7枚の画像をブラウザの中にランダム配置で表示させ、 さらにjQueryのjqfloat.jsで画像をふわふわ動かす、というものを作っています。 ランダム配置まではうまくいったのですが jqfloatが7枚のうち1枚にしか適用されず困っております。(最後のid='fuwa'のところ) jsの勉強を始めたばかりでスクリプトの書き方が変だったりするかもしれませんが… どなたか対処法を教えていただけませんでしょうか。 どうぞよろしくお願い致します! <script type="text/javascript"><!-- $(document).ready(function() { $('#fuwa').jqFloat({ width: 50, height: 50, speed: 2500 }); }); var images = [ {img : "1.png" , url : "http://1.com"}, {img : "2.png" , url : "http://2.com"}, {img : "3.png" , url : "http://3.com"}, {img : "4.png" , url : "http://4.com"}, {img : "5.png" , url : "http://5.com"}, {img : "6.png" , url : "http://6.com"}, {img : "7.png" , url : "http://7.com"} ]; images.sort(function(){return Math.random() - Math.random();}); function getBrowserWidth ( ) { if ( window.innerWidth ) { return window.innerWidth; } else if ( document.documentElement && document.documentElement.clientWidth != 0 ) { return document.documentElement.clientWidth; } else if ( document.body ) { return document.body.clientWidth; } return 0; } function getBrowserHeight ( ) { if ( window.inneHeight ) { return window.innerHeight; } else if ( document.documentElement && document.documentElement.clientHeight != 0 ) { return document.documentElement.clientHeight; } else if ( document.body ) { return document.body.clientHeight; } return 0; } Imgn=7; for (i=0; i < Imgn; i++){ xpx = 50+Math.floor(Math.random() * (window.innerWidth -280)) + 1; ypx = 30+Math.floor(Math.random() * (window.innerHeight -300)) + 1; thumbs="<div style='position:absolute;left:"+ xpx +"px;top:"+ ypx +"px;' id='fuwa'><a href='"+images[i].url+"'><img src='"+images[i].img+"'></a></div>"; document.write(thumbs); } </script>

専門家に質問してみよう