/******************************************************************** * SendModule3.41 for GameRankingSystem 10.5.1999 Toshirou Takahashi * ------------------------------------------------------------------ * このモジュールはNewGameWebのスコア送信のためのスクリプトです。 * エントリしたゲームの中に貼り込むSCRIPTタグとセットで使用します。。 * このモジュールソースとバージョンアップ情報は * http://web01.fureai.or.jp/~tato/GameWeb/indexTest.htm * で公開されています。 * * わかってるバグ * ... * //送信したError logのtitleに含まれる日本語が化ける * //どうもIEのエラーばっかりなぁ... * * * 更新履歴 * * 10.5.1999--3.4.1GRS_score!='undefined'がMozilla/3.01 [ja] (Win95; I) * で型が違うと怒られちゃったみたいなのでf^^;;直しま * した。 * 10.3.1999--3.4 DP2でスコアにundefinedがセットされるケースが * あったのでスコアの例外分岐をした。 * 8.16.1999--3.3 window.GRS_nwin.document.write(GRS_NewGameWebHead('Ranking')) * がエラーになるIEがまだあるので !GRS_IE4 に。 * 8.10.1999--3.2 submit()後のGRS_sendflag=trueを止める * (12.11.1998参照) * 前回GRS_errorOff=true を切り忘れてたf^^;; * 8. 5.1999--3.1 DramePassport/2.0に対応 * 6.30.1999--3.01 どうしてもIEのエラーが無くならないので * win.resizeをすべてコメントアウト。 * これがだめなら次はGRS_NewGameWebHeadをやめよう。 * 6.28.1999--3.01 サブウィンヘッダの読込行を気持ち後ろへf^^;; * 6. 9.1999--3.0 GRS_nameをwindow.GRS_nameに。 * with(window.GRS_sendFormOj)を展開してみる。 * 5.30.1999--2.9 ランキングへ画像登録機能追加 * 5.22.1999--2.8 今までのplay数(ランキング送信時計測)の他に * access数(sendModule読込時計測)を追加。 * 5.19.1999--2.7 IE4,5で頻繁に起こる「アクセスは拒否されました」 * をwinopen後、GRS_NewGameWebHead('Ranking')の * 書き込みタイミングのずれと見て、if(window.GRS_nwin) * またはif(!!window.GRS_nwin)でチェックをかけて * みる。しばらく様子見。 * 4.27.1999--2.6 Error時でもGRS_scroeとGRS_nameさえ入力済みなら * ランキング送信を実行するように修正 * 4.27.1999--2.5 [送信用FORMのHTMLを出力]でIE4+の2重出力バグ取る * about:blank出力をやめてGRS_NewGameWebHeadのみ * にする。 * 4.24.1999--2.4 NN3に対応 * GRS_getBrowserLANG()のデフォルトをenに設定 * GRS_NewGameWebHeadに「Now loading...」を追加 * 4.11.1999--2.3 IEでランキングウインドウを開いたまま再ゲームして * 再送信しようとすると「アクセスできません」という * エラーが出ていたのを回避。 * ランキングウインドウの送信中にNewGameWebHead表示 * 4. 5.1999--2.2.2if(window.opener)でopenerの無いIE3などでのエラー * 発生を回避。 * 2. 2.1999--2.2.1変数のいくつかをローカルへ整理 * 1.30.1999--2.2 IEでdocument.GRSscoreToが多重に書出されるのを回避 * 1.29.1999--2.1.1英語らしきもの^^;を英語みたいなものに修正f^^; * 1.28.1999--2.1 国際対応^^。ブラウザのlanguageがjaなら日本語、そ * れ以外なら英語(らしきもの^^;;)を表示するように修 * 正。ただ、英語OSでコメントの日本語がバグらないか * はまだ未検証。 * 1.27.1999--2.0 1.エラー処理をoffにするフラグを追加。 * 2.GRS_nameとGRS_emailをクッキーに溜めて流用できる * ようにするため、ゲーム側のスクリプト内でもグロー * バルで設定できるように修正(あおさんのリクエスト) * 1.15.1999--1.9 Error logの送信を充実。エラー情報を作者も見れる。 * 1.14.1999--1.8 IEでpromptがblurしてしまうのでfocusのタイミング * を少し変更。 * 1.10.1999--1.7.2IEの時にGRS_infomationsがGameページへ出力されて * しまうのでIEの文字化けバグが直るまで使わないこと * にする(復活はいつになることやらf^^;) * 1. 7.1999--1.7.1ちょっと整理^^; * 1. 7.1999--1.7--ver1.6のIEの文字化け対策が効かないf^^;ので廃止。 * かわりに萩原さん直伝の裏技を使用。 * IEの時にinsertAdjacentHTMLでGame側のHTMLへ書出。 * Gameへの影響の様子見。 * 12.25.1998--1.6--IEの文字化け対策でMETAタグのCHARSET=x-sjis追加。 * 12.21.1998--1.5--MacPPC+NN4でclick()送信不能の為submit()に変更。 * 12.16.1998--1.3--エラーダイアログ出力を止め、エラーログを記録。 * またきてね〜でサブウインクローズ。 * 12.12.1998--1.2--ゲームと同じウインドウ内に送信フォームやお知らせ * を出力するとゲームのじゃまだったり^^;、frame内の * ゲームだとランキングが見にくくなったりするので送 * 信フォームやランキングを送信ウインドウ出力に変更。 * 12.11.1998--1.1--送信後Backボタンを押した時に同じスコアで再送信し * てしまうのを送信後GRS_sendflagを立てることで回避。 * (完全ではない^^;;のでinfoが必要かも) * * ------------------------------------------------------------------ * 変数GRS_scoreにスコアを入れてゲーム終了後GRS_sendScore()を起動す * るように設定してください。GRS_sendScore()が起動されると名前入力な * どのダイアログが出てその後ランキングcgiにデータが送信されます。 * GRS_nameとGRS_emailはゲーム内で設定すれば優先でそれが送られ、未設 * 定なら送信時にダイアログで入力要求されます。 * var GRS_name='';var GRS_email='';も可能です。 * var GRS_errorOff=trueをゲームページのSCRIPTに書くとError送信停止 * * ** * バージョンフラグ * GRS_v4 //ver4ブラウザ(appVersion)ならtrue(グローバル) * GRS_Win //Winならtrue(グローバル) * GRS_Mac //Macならtrue(グローバル) * GRS_X11 //X11ならtrue(グローバル) * GRS_N4 //NN4.0以上ならtrue(グローバル) * GRS_IE4 //IE4.0以上ならtrue(グローバル) * ** * ベースPATH * GRS_baseHref ** * エラー処理用ファンクション * GRS_myOnError() //エラー取得とエラー出力停止 * GRS_errorOff //エラー処理フラグ (GRS_errorOff=trueで処理停止)(グローバル) * GRS_timeArray //発生ローカル時刻(グローバル) * GRS_msgArray //エラーメッセージ(グローバル) * GRS_urlArray //エラーurl(グローバル) * GRS_lnoArray //エラー行番号(グローバル) * GRS_recError() //エラー記録 * GRS_docuUrl //ロケーション(ローカル) * GRS_appName //appName(ローカル) * GRS_userAgent //userAgent(ローカル) * GRS_platform //プラットフォーム(Win32,Mac...)(ローカル) * GRS_errorLog //エラー内容(グローバル) ** * 言語処理関係 * GRS_getBrowserLANG() //ブラウザ言語を取得 * GRS_browserLang //ブラウザ言語(ja,en...)(グローバル) * ** * アクセスカウント * GRS_accesscount() //アクセスカウントcgi起動 * GRS_accesscnt //ダミーimage * ** * 送信用HTML出力ファンクション * GRS_mkSenderHTML() * GRS_infomations //お知らせ(ローカル) * GRS_gameCgiUrl //スコアの送信先(ローカル) * GRS_gameID //このjsの呼び出し元GRSmodule***.jsへCGIから出力(グローバル) * GRS_sendHTML //送信用FORMのHTML(ローカル) * GRS_sendFormOj //送信用FORMの出力先oj(NNはsunWin,IEはself)(グローバル) ** * スコア送信用ファンクション * GRS_sendScore() * GRS_namemsg1 //プレイヤーの名前入力メッセージ1(ローカル) * GRS_namemsg2 //プレイヤーの名前入力メッセージ2(ローカル) * GRS_namemsg3 //プレイヤーの名前入力メッセージ3(ローカル) * GRS_namemsg4 //プレイヤーの名前入力メッセージ4(ローカル) * GRS_namemsg5 //プレイヤーの名前入力メッセージ5(ローカル) * GRS_name1 //プレイヤーの名前1(ローカル) * GRS_emailmsg1 //プレイヤーのE-mail入力メッセージ1(ローカル) * GRS_commentmsg1 //プレイヤーのコメントメッセージ1(ローカル) * GRS_bye1 //さよならメッセージ1(ローカル) * GRS_name //プレイヤーの名前(ローカル/ゲーム側で設定時グローバル) * GRS_namemsg //プレイヤーの名前入力に関する説明文(ローカル) * GRS_email //プレイヤーのE-mail(ローカル/ゲーム側で設定時グローバル) * GRS_emailmsg //プレイヤーのE-mail入力に関する説明文(ローカル) * GRS_comment //コメント(ローカル) * GRS_commentmsg //コメント入力に関する説明文(ローカル) * GRS_score //Gameスコア変数(グローバル) * GRS_sendflag //Gameスコア送信済みフラグ(グローバル) * GRS_scoresetflag //Gameスコアセット済みフラグ(グローバル) * GRS_icon1 //アイコン画像url * GRS_submit() //Gameスコア送信 ** * スコア送信用FORM * document.GRSscoreTo.GRSscore //スコア * document.GRSscoreTo.GRSscoreName //名前 * document.GRSscoreTo.GRSemail //E-mail * document.GRSscoreTo.GRScomment //コメント * document.GRSscoreTo.GRSsend //送信ボタント * document.GRSscoreTo.GRSerror //error * document.GRSscoreTo.GRSicon1 //アイコン画像 ** * GRS_playID   //プレイ1回毎に一意のID*未使用 * * ------------------------------------------------------------------ * Toshirou Takahash tato@fureai.or.jp */ /******************************************************************** * バージョンセットなど * ------------------------------------------------------------------ */ //--バージョンフラグ with(navigator){ //--基本的にはオブジェクトの有無で分岐するので微調整時用に使用予定 var GRS_v4=0+appVersion.charAt(0)>=4 var GRS_Win=(userAgent.indexOf("Win")!=-1) /*Winならtrue*/ var GRS_Mac=(userAgent.indexOf("Mac")!=-1) /*Macならtrue*/ var GRS_X11=(userAgent.indexOf("X11")!=-1) /*X11ならtrue*/ var GRS_DP2=(userAgent.indexOf("DreamPassport/2")!=-1) /*DP2ならtrue*/ var GRS_N4=(GRS_v4&&appName=="Netscape") /*NN4.0以上ならtrue*/ var GRS_IE4=(GRS_v4&&userAgent.indexOf("MSIE")!=-1) /*IE4.0以上ならtrue*/ } //--ベースHREF var GRS_baseHref='http://web01.fureai.or.jp/~tato/GameWeb/'; /******************************************************************** * エラー処理 * ------------------------------------------------------------------ */ //--var GRS_errorOff=true if(!window.GRS_errorOff)window.onerror = GRS_myOnError var GRS_timeArray = new Array() var GRS_msgArray = new Array() var GRS_urlArray = new Array() var GRS_lnoArray = new Array() function GRS_myOnError(msg, url, lno) { GRS_timeArray[GRS_timeArray.length] = new Date() GRS_msgArray[GRS_msgArray.length] = msg GRS_urlArray[GRS_urlArray.length] = url GRS_lnoArray[GRS_lnoArray.length] = lno GRS_recError() return true } var GRS_errorLog =""; function GRS_recError() { var GRS_docuUrl = location.href var GRS_appName = navigator.appName var GRS_userAgent = navigator.userAgent var GRS_platform = navigator.platform var GRS_errscore = '' if(window.GRS_score)var GRS_errscore = window.GRS_score;//errlog用 var GRS_aftorsetscore ='' for (var i=0; i < GRS_msgArray.length; i++) { GRS_errorLog += '&Error='+i+'' GRS_errorLog += '&GameID='+GRS_gameID GRS_errorLog += '&DocuUrl='+GRS_docuUrl GRS_errorLog += '&Title='+ document.title GRS_errorLog += '&LocalTime='+ GRS_timeArray[i]+'' GRS_errorLog += '&ErrorURL='+ GRS_urlArray[i]+'' GRS_errorLog += '&LineNo='+ GRS_lnoArray[i]+'' GRS_errorLog += '&Message='+ GRS_msgArray[i] GRS_errorLog += '&AppName='+ GRS_appName GRS_errorLog += '&userAgent='+ GRS_userAgent GRS_errorLog += '&platform='+ GRS_platform GRS_errorLog += '&language='+ GRS_browserLang GRS_errorLog += '&errscr='+ GRS_errscore GRS_errorLog += '&afterscr='+ GRS_aftorsetscore } if(confirm('error! お手数ですが、エラーlogを送信していただけますか ? ')){ location.href=GRS_baseHref+'GameCenter/GRS'+GRS_gameID+'/GRSerror'+GRS_gameID+'.cgi?'+GRS_errorLog.split(' ').join('+') }else{ //alert('エラーlogはlocationへ\njavascript:alert(GRS_errorLog)\nで見ることが出来るかもしれません ') } if(GRS_scoresetflag&&!GRS_sendflag)GRS_submit() if(window.GRS_nwin&&!GRS_scoresetflag)window.GRS_nwin.close(); } /******************************************************************** * lang取得 * ------------------------------------------------------------------ */ function GRS_getBrowserLANG(){ if(document.layers) return navigator.language if(document.all) return navigator.browserLanguage return 'en' } var GRS_browserLang=GRS_getBrowserLANG() /******************************************************************** * アクセスカウント * ------------------------------------------------------------------ */ function GRS_accesscount(){ if (document.images){ var GRS_accesscnt=new Image() GRS_accesscnt.src= 'http://web01.fureai.or.jp/~tato/GameWeb/PerlProvider/'+ 'GRSaccesscnt.cgi?GRSgameid='+GRS_gameID+'&GRSaccesscount=on' } } GRS_accesscount() /******************************************************************** * 送信用FORMのHTMLを出力 * Syntax : GRS_mkSenderHTML(出力先oj) * ------------------------------------------------------------------ */ var GRS_score; var GRS_sendflag = false; var GRS_scoresetflag = false; var GRS_sendFormOj; function GRS_mkSenderHTML(GRS_subwinoj){ var GRS_infomations=GRS_NewGameWebHead('Ranking') var GRS_gameCgiUrl=GRS_baseHref+'GameCenter/GRS'+GRS_gameID+'/GRS'+GRS_gameID+'.cgi' var GRS_sendHTML='' +'
'; if(document.all){ if(!self.document.GRSscoreTo){ document.body.insertAdjacentHTML('BeforeEnd',GRS_sendHTML) GRS_sendFormOj=self.document.GRSscoreTo } } else if(GRS_DP2){ document.open("text/html"); document.write(GRS_sendHTML); } else { GRS_subwinoj.document.open("text/html"); GRS_subwinoj.document.write(GRS_infomations);//IE,DP2は出力先がbodyなので出さない GRS_subwinoj.document.write(GRS_sendHTML); GRS_subwinoj.document.close(); GRS_sendFormOj=GRS_subwinoj.document.GRSscoreTo } } if(GRS_DP2){ GRS_mkSenderHTML(window) } /******************************************************************** * 名前等入力してスコアを送信 * Syntax : GRS_sendScore() * ------------------------------------------------------------------ */ function GRS_sendScore(){ if(GRS_DP2){ // } else { GRS_mkSubWin("about:blank","GRSwin",0,0,500,400); //"about:blank"はIEアクセス不能回避 GRS_mkSenderHTML(GRS_nwin); } GRS_sendflag = false; GRS_scoresetflag = false; if(window.GRS_browserLang=='ja'||GRS_DP2){ var GRS_namemsg1 = 'あなたのスコアは ' var GRS_namemsg2 = ' 点でした(^^)/~\n' var GRS_namemsg3 = 'ランキングへ送るなら ' var GRS_namemsg4 = '名前を入力してください ' var GRS_namemsg5 = 'ランキングへ送りますか?' var GRS_name1 = 'ななしのごんべえ ' var GRS_emailmsg1 = 'E-mailアドレスを入力できます。\ \n' + '入力しなくてもかまいません。 \n'; var GRS_commentmsg1 = '感想をひとことどうぞ(^^)。 \n' + '入力しなくてもかまいません。 \n'; var GRS_bye1 = 'またきてねー(^^)/~ ' } else { var GRS_namemsg1 = 'Your score was ' var GRS_namemsg2 = ' point(^^)/~.\n' var GRS_namemsg3 = 'If you want to send the score to the Ranking,' var GRS_namemsg4 = ' please write your name.' var GRS_namemsg5 = 'Let\'s send, OK?' var GRS_name1 = 'hogehoge' var GRS_emailmsg1 = 'If you want to make the link for your E-mail address\n' + ' on the Ranking, please write.\n'; var GRS_commentmsg1 = 'You can write comment for this Game.\n' var GRS_bye1 = 'bye(^^)/~' } var GRS_namemsg = GRS_namemsg1+GRS_score+GRS_namemsg2 if(!window.GRS_name){ GRS_namemsg += GRS_namemsg3; GRS_namemsg += GRS_namemsg4; var GRS_name = GRS_name1; } else { GRS_namemsg += GRS_namemsg5; var GRS_name = window.GRS_name; } if(window.opener)self.focus(); var GRS_score_st=''+GRS_score; if(GRS_score_st!='undefined'||GRS_score_st!=''||GRS_score_st!=null){ if(!!(GRS_name=prompt(GRS_namemsg,GRS_name))){ if(GRS_DP2){ document.GRSscoreTo.GRSscore.value= GRS_score; GRS_aftorsetscore=GRS_score;//errlog用 document.GRSscoreTo.GRSscoreName.value = GRS_name; } else { window.GRS_sendFormOj.GRSscore.value= GRS_score; GRS_aftorsetscore=GRS_score;//errlog用 window.GRS_sendFormOj.GRSscoreName.value = GRS_name; } GRS_scoresetflag = true; if(!window.GRS_email){ var GRS_emailmsg = GRS_emailmsg1; var GRS_email = prompt(GRS_emailmsg,''); } else { var GRS_email = window.GRS_email } var GRS_commentmsg = GRS_commentmsg1; var GRS_comment = prompt(GRS_commentmsg,''); if(GRS_DP2){ document.GRSscoreTo.GRSemail.value = GRS_email; document.GRSscoreTo.GRScomment.value = GRS_comment; document.GRSscoreTo.GRSerror.value = GRS_errorLog; if(window.GRS_icon1) document.GRSscoreTo.GRSicon1.value = GRS_icon1; } else { window.GRS_sendFormOj.GRSemail.value = GRS_email; window.GRS_sendFormOj.GRScomment.value = GRS_comment; window.GRS_sendFormOj.GRSerror.value = GRS_errorLog; if(window.GRS_icon1) window.GRS_sendFormOj.GRSicon1.value = GRS_icon1; } GRS_submit() }else{ alert(GRS_bye1); if(document.layers||document.all)window.GRS_nwin.close(); } } else { alert('スコアの値がみあたらないため残念ながら送信できません\nできれば作者に連絡してみてください。'); } } function GRS_submit(){ if(GRS_DP2){ document.GRSscoreTo.submit(); } else if (window.GRS_sendFormOj){ GRS_sendFormOj.submit(); //setTimeout('GRS_sendflag=true;',3000); } } /******************************************************************** * 簡易サブウインドウ開き * Syntax : GRS_mkSubWin(URL,winName,x,y,w,h) * 例 : GRS_mkSubWin(winIndex,'test.htm','win0',100,200,150,300) * ------------------------------------------------------------------ */ var GRS_nwin; function GRS_mkSubWin(URL,winName,x,y,w,h){ var GRS_para ="" +" left=" +x +",screenX=" +x +",top=" +y +",screenY=" +y +",toolbar=" +0 +",loction=" +0 +",directories=" +0 +",status=" +0 +",menubar=" +0 +",scrollbars=" +1 +",resizable=" +1 +",innerWidth=" +w +",innerHeight=" +h +",width=" +w +",height=" +h GRS_nwin=window.open(URL,winName,GRS_para); //GRS_nwin.location.href="about:blank" //-- for Gecko zantei version --// if(document.getElementById&&GRS_N4){ if(!window.GRS_name)GRS_name='geckoman' if(!window.GRS_score)GRS_score='' if(!window.GRS_email)GRS_email='' if(!window.GRS_comment)GRS_comment='' if(!window.GRS_icon1)GRS_icon1='' if(!!window.GRS_nwin)GRS_nwin.resizeTo(500,400) window.GRS_nwin.location.href=GRS_baseHref+'GameCenter/GRS'+GRS_gameID+'/GRS'+GRS_gameID+'.cgi?GRSscoreName='+GRS_name+'&GRSscore='+GRS_score+'&GRSemail='+GRS_email+'&GRScomment='+GRS_comment+'&GRSicon1='+GRS_icon1 } //-------- end of Gecko--------// if(!GRS_IE4){ if(!!window.GRS_nwin)window.GRS_nwin.document.write(GRS_NewGameWebHead('Ranking')) } if(window.opener)window.GRS_nwin.opener=self; } /******************************************************************** * NewGameWeb Head * ------------------------------------------------------------------ */ function GRS_NewGameWebHead(subtitle){ return "
" +"NewGameWeb
[ "+subtitle+" ]
" +"
" +"

" +"
" +"Now loading..." +"
" }