ブラウザごとのJavaScriptの動き

このQ&Aのポイント
  • IEの脆弱性問題に絡んで、他のブラウザでシステムの動きを調査することになりました。
  • 日付(YYYY/MM/DD)をあるhidden項目にセットしているのですがcgiアプリでその日付を取得してチェックしているところで「日付のフォーマットエラー」になってしまいます。
  • IEと他のブラウザのJavaScriptの動きの違いや、対処方法についてご質問です。
回答を見る
  • ベストアンサー

ブラウザごとのJavaScriptの動き

お世話になります。 IEの脆弱性問題に絡んで、他のブラウザでシステムの動きを調査することになりました。 (システム的にはIE限定で提供されています) で、日付(YYYY/MM/DD)をあるhidden項目にセットしているのですが cgiアプリでその日付を取得してチェックしているところで 「日付のフォーマットエラー」になってしまいます。 JavaScriptファイルに、 正しく取得できているかalertを入れてみました。 IEでは alert("1. " + parent.document.form1.HIZUKE.value) ; alert("2. " + document.form2.DATE.value) ; ↓ 1. 2014/04/30 2. 2014/04/30 firefox、operaでは ↓ 1. 114/04/30 2. 114/04/30 と表示されました。 parseInt、 toString() の関連と思われるのですが 対処方法がわかりません。 また、chromeでは このエラーのせいなのか、parentのフレームの内容が表示されません。 ※parentの内容は、親フレームのonload処理で表示しています。 ※全てcgiアプリでボタンクリックによる動的な表示です。 以前、firefoxなどはJavaScriptは動かないと聞いた事ともあるような気がしますが、 IEと他のブラウザではJavaScriptの動きは違うのでしょうか? またそれが提示されているサイトなどあるのでしょうか? よろしくお願いします。

  • jg1wjz
  • お礼率91% (148/162)

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

  • ベストアンサー
  • SeydaNeen
  • ベストアンサー率43% (26/60)
回答No.1

参照URLなどに書いてありますが、 114という数字がアヤしいですね。これは1900が原点になっているということです。 getFullYearを使うように修正するのがいいと思うのですが。これはInternet Explorer 6でもサポートすると書かれています。

参考URL:
https://oku.edu.mie-u.ac.jp/~okumura/javascript/if.html
jg1wjz
質問者

お礼

ありがとうございました! (思い出しました) getYear<1900 の場合、1900を加算することで正常な動きを確認できました。 実際には、getFullYearに変更するようにしたいと思います。

関連するQ&A

  • JavaScriptが動きません

    下記のようなJavaScriptを作りましたが、IE8ではボタンを押しても「ようこそJavaScriptへ」が表示されません。 「F12 Web開発者ツール」というのをチョッとイジったのですが、その為ではないかと思います。 どこをどうイジったか覚えてません。 どうすれば動作するようになるでしょうか、教えてください。 動作状況  サーバーに置いてアクセスした場合は、「FireFox」「IE8」とも表示される。  ローカルデスクに置いてアクセスした場合は、「FireFox」では表示される、「IE8」では表示されない。 ☆OSはWindowsXP。 ☆IE8のセキュリティ設定で「アクティブスクリプト」は「有効にする」になってます。 ------JavaScript----------- <HTML> <BODY> <FORM> <P> <INPUT TYPE="submit" VALUE="ここを押すとメッセージが表示されます" ONCLICK="HelloWorld()"> </FORM> </BODY> </HTML> <SCRIPT LANGUAGE="JavaScript"> <!--Hide script from no-JavaScript browsers function HelloWorld() { alert("ようこそJavaScriptへ"); } //--> </SCRIPT>

  • 【javascript】firefoxでの、alertについて

    はじめてOK Waveで質問します。 よろしくお願いします。 javascriptについての質問です。 form内の複数のradioの項目の組み合わせに応じて、if文でlocation.hrefでページ遷移するというjsを書きました。 IEでは動作しましたが、firefoxで動作しませんでした。 firefoxで動かない原因が分からず、自分なりにalertを使いながら原因を探っていたところ、 if文の次にalertを書いたところ、firefoxでも動作することができました。 ------------------------------ function pageshift() { var one, two; for (i = 0; i < 2; i++) { if(document.form.one[i].checked){ one = document.form.one[i].value; } } for (i = 0; i < 2; i++) { if(document.form.two[i].checked){ two = document.form.two[i].value; } } if(one == 'a' && two == 'a') { window.location.href = 'aa.html';} } else if(one == 'a' && two == 'b') { window.location.href = 'ab.html';} } alert('test'); } ------------------------------ (最後のalert('test');を書いたらそれまでfirefoxでは動作しなかったものが、動作した、ということです。IEではalert('test');がなくても目的通りに動作しています。) しかしながら、alertでメッセージが出てきてしまうのは避けたいと考えています。 alertを書いてページ遷移のfunctionが動作(正常に処理?)したとするならば、alertと同じような処理状態でなおかつメッセージを表示しないような状態に持っていければ、目的どおりになるのではないかと考えています。 どのように記述していけばいいのでしょうか・・・? よろしくお願いいたします。

  • JavaScriptでデータ送信

    あるJavaScriptを使ったPerlスクリプトの改造を行っています。 <A href="JavaScript:dataTrans()" class="link">link</A>をクリックすることにより、 function dataTrans(){ if(startflg){return;} if(max == 0){alert("メッセージ");return;} document.form1.para0.value = data; document.form1.para1.value = data2; document.form1.submit(); } 上記データをCGIページに送っているようです。 このJavaScriptから送信したデータはCGI側で正常に表示されているのですが、Perlスクリプトの改造でリンク元制限を行うと、送信元のページ情報をCGI側で読み取ることができていないようで、制限ができないようです。よくわかりませんが・・・ <A href="http://">link</a>からCGIへリンクした場合は、正常にリンク元制限が行えます。 document.form1.para0.value = data; document.form1.para1.value = data2; document.form1.submit(); この部分を変更すれば、リンク元ページ情報が正常に受信できるのではと考え、 http://pzxa85.hp.infoseek.co.jp/www/wwwjsfor.htm ↑ページ等の解説ページをみてみましたが、よくわかりませんでした。 JavaScriptは勉強したことがなく、Perlも入門者程度の知識です。わからないことだらけで、言いたいことが上手く伝えられませんが、出来るだけ調べて説明させてもらいますので、どうぞ宜しくお願いいたします。

  • FireFoxでJavaScriptのエラーが出ます。

    現在JavaScriptを独学しはじめた者ですが、ご回答の方よろしくお願いいたします。 右側のフレームに文字又は数字を入れてクリックすると左側のフレームに反映されると言うスクリプトです。 IEでは問題なく動作しますがFireFoxだと動作しません。 親フレーム <frameset cols="20%,*"> <frame src="left.html" name="left"> <frame src="right.html" name="right"> </frameset> 左側のフレーム <input type="text" name="answer"> 右側のフレーム <form> <input type="text" name="question"> <input type="button" value="click" onclick="parent.left.answer.value=this.form.question.value"> </form> アドバイスよろしくお願いいたします。

  • javascriptがブラウザ上でうまく動きません(すいません。初学者です。

    長いこと探したのですが、 見つからなかったためご質問させて頂きます。 お恥ずかしいのですが、教えて頂きますと非常に助かります。。。 (​http://blog.livedoor.jp/dankogai/archives/50940292.html​を参考にしました) <input type="submit" value="Hello, World!" onclick="alert(this.value)"> がうまくブラウザで表示されません。 ブログにあるように本来ならばボタンが表示されると思うのですが、 <input type="submit" value="Hello, World!" onclick="alert(this.value)">とそのまま文字が出るだけになっています。 こちらは、なぜなのでしょうか? また、どうしたら正しい表示をできるのでしょうか? ご教示願います。 私のPCはMacで、 ブラウザはFireFoxを使用しました。 (他のブラウザでも同様でした)

  • javascriptを使ったformへの自動ログインがうまくいきません

    こんにちは、以下のような書かれたサイトにjavascriptを使って自動ログインしたいと考えていますが、うまくログインされません。 一番下のinputタグにてログインしているようなのですが IE.Document.Form1.imgLogin.click(); とすると、エラーになるので IE.Document.Form1.elements(5).click(); としましたがエラーにはならないもののうまくいきませんでした。 IE.Document.Form1.elements(5).data = true; IE.Document.Form1.elements(5).value = true; IE.Document.Form1.action = "index.aspx"; IE.Document.Form1.submit(); としてみましたが、こちらもうまくいきませんでした。 どのようにしたら、自動ログインすることが可能なのでしょうか? 教えて頂けると非常に助かります。 よろしくお願いいたします。 ---サイトフォーム <FORM id=Form1 name=Form1 action=index.aspx method=post> <INPUT id=__VIEWSTATE type=hidden value=... name=__VIEWSTATE> <INPUT id=__EVENTVALIDATION type=hidden value=... name=__EVENTVALIDATION> <INPUT id=txtUid maxLength=6 value="" name=txtUid> <INPUT id=txtPwd type=password maxLength=20 value="" name=txtPwd autocomplete="off"> <INPUT language=javascript id=imgLogin onclick="{ if (document.Form1.txtUid.value==&quot;&quot;) { document.Form1.txtUid.focus();alert('ユーザIDを入力してください。');return false;} if (document.Form1.txtPwd.value==&quot;&quot;) {alert('パスワードを入力してください。');document.Form1.txtPwd.focus();return false;} return true;};" type=image src="img\login1.gif" border=0 name=imgLogin></form> ----オートログイン.js var IE = WScript.CreateObject("InternetExplorer.Application"); IE.Visible = true; IE.Navigate("http://hogehoge/hoge/index.aspx"); while(IE.busy) ; while(IE.Document.readyState != "complete") ; IE.Document.forms(0).elements(3).value = "user"; IE.Document.forms(0).elements(4).value = "password"; //IE.Document.forms(0).elements(5).click(); //IE.Document.Form1.imgLogin.click(); IE.Document.Form1.elements(5).data = true; IE.Document.Form1.action = "index.aspx"; IE.Document.Form1.submit();

  • javascriptのDOMについてなんですが・・・

    閲覧有難うございます。 JavaScriptのDOMを用いてテキストボックスを生成しようと考えているのですがうまくいきません。 <form name="form" action="index2.php"> <select id="factor" onchange="swicthForm()"> <option value="0">選んでください</option> <option value="1">1個</option> <option value="2">2個</option> <option value="3">3個</option> <option value="4">4個</option> <option value="5">5個</option> </select> </form> <br> <script type="text/javascript"> function swicthForm(){ var options = document.form.factor.value; alert(options); } } </script> を用いてSELECTでいくらを選んだかが表示することが出来ました。 alert(options)の値の分だけテキストボックスなり何なりを生成したいのですがうまくいきません。 どの様にしたらテキストボックスなどを表示できますか?

  • JavaScriptでとても簡単なことだと思うのですが…

    どういう風に検索かければ言いかわかりませんでした。 フレーム1と2に分けて、フレーム1でボタンを押すとフレーム2のテキストボックスの中に文字を入力する。という物を作っています。 下記はフレーム1の内容の一部です。本当に簡単な質問だとおもいます。 <frame> <input type="button" value="ボタン1"onclick="window.parent.frame2.document.getElementById('txt1').value='おはようございます。'"> </frame> <frame> <input type="button" value="ボタン2"onclick="window.parent.frame2.document.getElementById('txt2').value='おやすみなさい。'"> </frame> この場合ボタンが二つ表示されるのですが、ここをボタンひとつでこの二つの処理を同時に実行させたいのです。 お力お貸しください。

  • Null またはオブジェクトではありませんのエラー

    HTML部で <FORM NAME="frm1" METHOD="post" ACTION="xxx.html">  <INPUT TYPE="hidden" NAME="txt1"> </FORM> javascriptで document.frm1.txt1.value = "hoge"; document.frm1.submit(); のように記述しています。 FireFoxブラウザでは期待通りの動きをするのですが、 IE6では「document.frm1.txt1はNullまたはオブジェクトではありません」 とエラーが出てしまい、画面遷移しません。 因みにページはフレームを利用しており、 フォームや画面遷移はメインフレームでしか使っていないので、 フレーム名も特につけておりませんし、 targetの記述も使用しておりません。 そこらへんに原因があるのでしょうか。 それにしてもFireFoxでは可、IEではエラー というのも解せないです。 どなたか分かる方いらっしゃいましたら ご教示願います。

  • 複数の入力項目を1つの「NAME="●●"」にまとめたい

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=169697 ↑この質問と全く同じことがやりたいのですが、うまくいきません。 この質問をされた方はついた回答の文章だけでうまくいったようですが、わたしは試行錯誤したのですが、ダメでした。。 下が試行錯誤の結果です。もちろん動作しません。(^-^; どこが間違っているのか、ぜんぜん見当違いのことをしてしまっているのか、どなたかわかる方ご教授ください。 また、上のアドレスの回答の方がおっしゃるのは具体的にどう記述すればよいのか、ずばり正解も教えていただけると大変助かります。 よろしくお願いしたします。 <SCRIPT type="text/javascript" language=JavaScript> <!-- function hizuke(){ h1 = document.form1.hi1.value; h2 = document.form1.hi2.value; h3 = document.form1.hi3.value; document.form1.hizuke.value = h1 + h2 + h3; } // --> </SCRIPT> -------------------------------------------- <form action="http://~.cgi" method="post" onSubmit="hizuke()" name="form1"> <input type="hidden" name="hizuke"> <input type="text" name="hi1" size="" value=""> <input type="text" name="hi2" size="" value=""> <input type="text" name="hi3" size="" value=""> <input type="submit" value="送信"> </form>

専門家に質問してみよう