/******************************************************************** * SendModule2.2 for GameRankingSystem 1.30.1998 Toshirou Takahashi * ------------------------------------------------------------------ * * わかってるバグ * ... * //送信したError logのtitleに含まれる日本語が化ける * * * 更新履歴 * * 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='';も可能です。 * ** * ベースPATH * GRS_baseHref ** * 言語処理関係 * GRS_getBrowserLANG() //ブラウザ言語を取得 * GRS_browserLang //ブラウザ言語 * ** * エラー処理用ファンクション * GRS_myOnError() //エラー取得とエラー出力停止 * GRS_errorOff //エラー処理フラグ (GRS_errorOff=trueで処理停止) * GRS_msgArray //エラーメッセージ * GRS_urlArray //エラーurl * GRS_lnoArray //エラー行番号 * GRS_timeArray //発生ローカル時刻 * GRS_appName //appName * GRS_userAgent //userAgent * GRS_platform //プラットフォーム(Win32,Mac...) * GRS_lang //ブラウザの言語(ja,en...) * getBrowserLANG() //GRS_langを取得する * GRS_recError() //エラー記録 * GRS_errorLog //エラー内容 ** * 送信用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スコア送信済みフラグ(グローバル) ** * スコア送信用FORM * document.GRSscoreTo.GRSscore //スコア * document.GRSscoreTo.GRSscoreName //名前 * document.GRSscoreTo.GRSemail //E-mail * document.GRSscoreTo.GRScomment //コメント * document.GRSscoreTo.GRSsend //送信ボタント * document.GRSscoreTo.GRSerror //error ** * GRS_playID   //プレイ1回毎に一意のID*未使用 * * ------------------------------------------------------------------ * Toshirou Takahash tato@fureai.or.jp */ var GRS_baseHref='http://web01.fureai.or.jp/~tato/GameWeb/'; function GRS_getBrowserLANG(){ if(document.layers) return navigator.language if(document.all) return navigator.browserLanguage } var GRS_browserLang=GRS_getBrowserLANG() /******************************************************************** * エラー処理 * ------------------------------------------------------------------ */ 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() var GRS_docuUrl = location.href var GRS_appName = navigator.appName var GRS_userAgent = navigator.userAgent var GRS_platform = navigator.platform var GRS_lang = getBrowserLANG() function getBrowserLANG(){ if(document.layers) return navigator.language if(document.all) return navigator.browserLanguage } 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() { 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_lang } 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で見ることが出来るかもしれません') } } /******************************************************************** * 送信用FORMのHTMLを出力 * Syntax : GRS_mkSenderHTML(出力先oj) * ------------------------------------------------------------------ */ var GRS_score; var GRS_sendflag=false; var GRS_sendFormOj; function GRS_mkSenderHTML(GRS_subwinoj){ var GRS_infomations='' var GRS_gameCgiUrl=GRS_baseHref+'GameCenter/GRS'+GRS_gameID+'/GRS'+GRS_gameID+'.cgi' var GRS_sendHTML='' +GRS_infomations +'
'; if(document.layers){ GRS_subwinoj.document.open("text/html"); GRS_subwinoj.document.write(GRS_sendHTML); GRS_subwinoj.document.close(); GRS_sendFormOj=GRS_subwinoj.document.GRSscoreTo } if(document.all){ if(!self.document.GRSscoreTo){ document.body.insertAdjacentHTML('BeforeEnd',GRS_sendHTML) GRS_sendFormOj=self.document.GRSscoreTo } } } /******************************************************************** * 名前等入力してスコアを送信 * Syntax : GRS_sendScore() * ------------------------------------------------------------------ */ function GRS_sendScore(){ GRS_mkSubWin("","GRSwin",0,0,500,100); GRS_nwin.opener=self GRS_mkSenderHTML(GRS_nwin); GRS_sendflag=false; if(GRS_browserLang=='ja'){ 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_namemsg4; var GRS_name = GRS_name1; } else { GRS_namemsg += GRS_namemsg5 var GRS_name = window.GRS_name } if(!!(GRS_name=prompt(GRS_namemsg,GRS_name))){ if(document.layers||document.all)GRS_nwin.resizeTo(500,400) 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,''); with(GRS_sendFormOj){ GRSscore.value = GRS_nwin.opener.GRS_score; GRSscoreName.value = GRS_name; GRSemail.value = GRS_email; GRScomment.value = GRS_comment; GRSerror.value = GRS_errorLog; } GRS_sendFormOj.submit(); setTimeout('GRS_sendflag=true;',1000); }else{ alert(GRS_bye1); if(document.layers||document.all)GRS_nwin.close(); } } /******************************************************************** * 簡易サブウインドウ開き * 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.opener=self; self.focus(); }