• 締切済み

document.write と Firefoxの戻り動作

document.writeを使ってhtmlを書き込むことで新たなページを表示した場合、Firefoxではブラウザの「戻りボタン」で戻ると元のページの表示位置(元のページがスクロールされていた場合のスクロール位置)ではなく、元のページの先頭から表示されます。 (IEでは、元のページの元の表示位置に戻ります。) FirefoxでもIEのように元のページの元の表示位置に戻るようにしたいのですが、何が問題か、ご指摘いただけないでしょうか? (下方にサンプルを記載します) ・行いたいこと  以下の例のfunction_test()内に別ページのhtmlを記述して、onlickで呼び出しそのhtmlを表示。そのhtml表示後、ブラウザの戻りボタンや、history.backを使って、元のページに普通に戻りたい。 <html> <head> <TITLE>test</TITLE> <script type="text/javascript"> <!-- function function_test() { document.write("<html><body>"); document.write("test"); document.write("<\/body><\/html>"); document.close(); } // --> </script> </head> <body> これはテスト<br> <br><br><br><br><br><br><br><br><br><br><br><br><br><br> <form> <input type='button' value='test' onclick='function_test()'> </form> <br><br><br><br><br><br><br><br><br><br><br><br><br><br> </body> </html>

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

document.writeで自ページを書き換えるのはおもいっきり力技ですので その後の挙動がブラウザによって違うのは仕方ないでしょう。

boyoyon123
質問者

お礼

何か基本的なことが抜けているのかもと思いましたが、だめなようですね。残念。 ありがとうございました。

関連するQ&A

  • document.writeについて

    document.writeについて document.writeのテキストで文字を表示するじゃんけんゲームを作っています。 文字をグーを表示させると全画面がきえてしまいます。 消えない様にその場所のみ替えるようするには、どうしたらよいでしょうか? また、document.writeで一旦表示されたらものをそこだけ消す 表示方法なども教えて下さい。 <script language="JavaScript"> <!-- function msg() { document.write("グー!"); } function msg2() { document.write("<br>チョキ!"); } function msg3() { document.write("<br>パー!"); } //--> </script> </head> <body> <br><br><br><br><br><br> <p onMouseup="msg()">グー</p><p onMouseup="msg2()">チョキ</p><p onMouseup="msg3()">パー</p> </body>

  • JS、document.write出力位置設定

    JavaScriptでdocument.writeを使いソースを書き加える際に 出力する位置を設定したいのですが方法が分かりません DOMはなるべく使用したくないのですが…… ※ソースは極力簡略化したものです <html><head> <script language="JavaScript"><!-- function test() { document.write("2"); } //--></script> </head><body> 1<br> <br> 3<br> <input type="button" value="write" onClick="test()"> </body></html> ボタンをクリックした際に、1と3の間の行に『2』を挿入したいのです この状態だと『2』のみ表示されますね 当方ズブの素人かつ本格的にJSを学ぶつもりなど毛頭ありませんので 噛み砕いて説明してくださると助かります DOMを使用しなければ不可能であれば「無理」の一言だけの回答で充分です お時間のある方、ご教示頂ければ幸甚ですm(_ _)m

  • ネスケでdocument.write

    質問があります。 <html> <head> <script type="text/javascript"> <!-- str = "a"; function func(){ document.open(); document.write( str ); document.close(); } --> </script> </head> <body onload = "func()"> </body> </html> というソースを組んだのですが、IE6なら正常に表示できたのにNetscape7だと表示されませんでした。 document.write("a")と記述すると表示できたのですが・・・。 本来組みたいソースは上記のstrが長文かつ多用するために簡略化したいのですが、何か良い方法はあるでしょうか?

  • ドキュメントを自ウィンドウに書き出したい

    <html> <head> <script language="JavaScript"> <!-- function doc() { document.write("JavaScript"); } //--> </script> </head> <body bgcolor="#ffffff"> <form name="form1"> <input type="button" value="ボタン" onClick="doc()"> </form> </body> </html> 上のプログラムの場合ボタンを押すとボタンが消えJavaScriptと書き出されてしまうのですが、ボタンの下に書き出すにはどうしたらよいのでしょうか?結果として以下のように表示させたいのですがどうしたらよいのでしょうか? <html> <head> </head> <body bgcolor="#ffffff"> <form name="form1"> <input type="button" value="ボタン"> <p>JavaScript</p> </form> </body> </html> これらのプログラムは自作のものです。

  • JavaScript document.write 「更新」すると動作しない

    JavaScriptを組み込んだサイトを作成しました。 自宅には2台PCがあり、パソコンAのブラウザーはFirefox3.5.3とIE7。 パソコンBのブラウザーはFirefox3.0.13とIE6.02900.5512 xpsp sp3です。 パソコンBのブラウザーで動かすとJavaScriptが正常に動きます。 更新ボタンを押しても正常です。 一方、パソコンAでは、一番最初にPCを起動してブラウザを立ち上げた時は正常に動作しますが、「更新」をすると、下記プログラムの <SCRIPT LANGUAGE=JavaScript1.2>document.write(ABC);</script> のdocument.write(ABC)を読み込んでくれなくなります。 ※下記の例で説明すると「あいうえお」という表示が出なくなります。 なお、document.write(ABC)のABCは、<SCRIPT SRC="http://XXXXXX.XXXX/XXXXX/XXXX.js"></SCRIPT>に格納してあります。(下記参照) 何が原因かご教示いただけますでしょうか? m(_ _)m よろしくお願い致します。 ------------------------------------------------ ◆本文 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> <SCRIPT src="http://XXXXXX.XXXX/XXXXX/XXXX.js"></SCRIPT> </HEAD> <BODY><SCRIPT language="javascript">document.write(ABC);</SCRIPT></BODY> </HTML> ------------------------------------------------ ◆http://XXXXXX.XXXX/XXXXX/XXXX.js の中身 var ABC=' <b>あいうえお</b>';

  • Firefox:JavaScriptのsubmit

    JavaScriptで、以下のようにsubmitしていますが、 IEではOKで、Firefoxでは「送信開始」ボタンで反応がありません。 Firefoxではどのように書けばよいのでしょうか? 以下は、テストのため省略できるギリギリまで省略していますので、意味のないスクリプトになってますが、実際にはJavaScriptで空白個所のチェックのロジックを入れています。 <html> <head> <script language="JavaScript"> <!-- function check1(){ document.FORM1.submit(); } ---> </script> </head> <form action='http://hogehoge.jp' method='post' name="FORM1"> <input type='button' value='送信開始' onClick="check1()"> </form> </body> </html>

  • document.writeからcgiへ出力すると文字化けします。

    フォームへ入力したデータを、いったんJavaScriptのdocument.writeでプレビューして、そこからCGIへ出力するプログラムを書いています。 プレビューせずにCGIに出力すると問題ないのですが、document.writeで出力すると、日本語が文字化けしてしまいます。半角英数字は大丈夫です。 document.writeした状態のソースをhtml化して出力するとこれまた大丈夫なのです。 コードを変えたり、jcode.plを利用させもらったりしたのですが、変わりませんでした。 CGIファイルのほうは途中で、この後、$valueをテキストファイルに出力したいと思っています。 もしお暇なときにでも、理由と対策を教えていただければ幸いです。 まだ不慣れなので、おかしいことをしていたら申し訳ありません。もっといい方法があれば、ぜひ教えてください。 入力用ファイル <html> <head> <script type="text/javascript"> function aaa(){ a=document.ff.tname.value; b=document.ff.tsono.value; document.write('<html>\n<head>\n</head>\n<body>\n'); document.write('<form name="ff0" method="post" action="test3.cgi">\n'); if(a==""){document.write('お名前欄が空です!<br>\n')}; if(b==""){document.write('その他欄が空です!<br>\n')}; document.write('お名前:<input type="text" name="t0name" style="border:none;font-size:16;" value="'+a+'"><br>\n'); document.write('その他:<input type="text" name="t0sono" style="border:none;font-size:16;" value="'+b+'"><br>\n'); document.write('<input type="button" value="戻る" onmousedown="window.history.back()">') if((a!="")&&(b!="")){ document.write('<input type="submit" value="送信">\n'); } document.write('</form>\n</body>\n</html>'); } </script> </head> <body onload="document.ff.tname.focus();"> <form name="ff" method="post" action=""> お名前:<input type="text" name="tname" style="ime-mode:active"><br> その他:<input type="text" name="tsono" style="ime-mode:inactive"><br> <input type="button" value="確認" onmousedown="aaa()"> </form> </body> </html> CGIファイル #!C:\Perl\bin\perl print "Content-type:text/html\n\n"; read (STDIN,$aaa,$ENV{'CONTENT_LENGTH'}); print "<html>\n<head>\n</head>\n<body>"; @bbb=split(/&/,$aaa); foreach $ccc(@bbb){ ($name,$value)=split(/=/,$ccc); $value=~ tr/+/ /; $value=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; print "$nameは$valueです。"; } print "</body>\n</html>";

    • ベストアンサー
    • Perl
  • document.clear()の使い方について

    はじめまして。 質問があります。 以下のコードは、作成されたウィンドウの文字列を削除することが できません。一体何が原因なのかがわかりません。どうかご教授 お願いします。 ---------------------------------------------------------------- <html> <head> <title>document.clear()の使用例</title> </head> <body> <script type="text/javascript"> <!-- document.write("document.clear()の使用例"); newWin = window.open("","test","width=400,height=100"); newWin.document.open(); newWin.document.write("新規に作られたウィンドウ"); newWin.document.close(); //--> </script> <form> <input type="button" value="ウィンドウの文字列を削除" onClick="newWin.document.clear()"> </form> </body> </html> ---------------------------------------------------------------- 以上です。

  • セレクトボックスの内容に応じウインドウを書き換え、さらにセレクトボックスを設置したい

    web上のjavascript入門ページなどを参照しながら学習中ですが詰まってしまいました。よろしくお願いします。 1. topページにセレクトボックスを設置。 2. セレクトされた内容に応じて、現在のウインドウを書き換えた後topページと同じセレクトボックスを設置。 3. 2を繰り返す。 このような動作をさせたいのですが、現在のウインドウを書き換えることは出来るのですがセレクトボックスを設置しようとするとエラーになります。 script_test01.htmlの内容 -------------------------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> </head> <body> <script type='text/javascript' src='script_test01.js'> </script> <br> <form name='form_0'> <select onchange='rewrite()' name='sel_0'> <option>A or B</option> <option>A</option> <option>B</option> </select> </body> </html> -------------------------------------------------- script_test01.jsの内容 -------------------------------------------------- function rewrite() { var sel_in =document.form_0.sel_0.options.selectedIndex; var sel_name = document.form_0.sel_0.options[sel_in].text; document.write('<html>\n'); document.write('<head>\n'); document.write('<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">\n'); document.write("<script type='text/javascript' src='script_test01.js'>\n"); document.write("</script>\n"); document.write('</head>\n'); document.write('<body>\n'); document.write(sel_in,' : ',sel_name,'<br>\n'); /* ↓この部分がうまくいかない document.write('<br>\n'); document.write('<form name='form_0'>\n'); document.write('<select onchange='rewrite()' name='sel_0'>\n'); document.write('<option>A or B</option>\n'); document.write('<option>A</option>\n'); document.write('<option>B</option>\n'); document.write('</select>\n'); /* ↑この部分がうまくいかない document.write('</body>\n'); document.write('</html>\n'); } -------------------------------------------------- script_test01.jsのコメントアウトをはずすとエラーになります。 script_test01.js内でさらに自分自身を記述している部分辺りなど、なにかおかしなことをやっていのではという自覚はありますが、よくわかりません。 あわせて質問ですが、.htmlと.jsはEUCで作成しcharsetもEUC-JPを指定しています。 topページをブラウザのエンコードで確認すると当然「日本語[EUC]」となっていますが、セレクトボックス選択後書き換えられたページを確認すると、「Unicode」なっていますがなぜでしょうか?「日本語[EUC]」に出来ないでしょうか?

  • ページ訪問時にiframe内を自動スクロールしたい

    iframe内に表示した内容(aaa.html)を、 ページ訪問時(もしくは更新時)に自動的に100px下にスクロール させたいと思っていますが、うまくできず困っています。 将来的にはif文によってスクロール位置を変えたいと考えています。 またサイトの都合上、アンカータグを使用しての位置指定はできません。 JavaScriptの使い方が間違っているのでしょうか? ご教示お願い致します。 以下ソースです。 framescroll.html <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> // 縦スクロール-上 function framescrollu() { document.getElementById("frame1").contentWindow.scrollBy(0,-100);} // 縦スクロール-下 function framescrolld() { document.getElementById("frame1").contentWindow.scrollBy(0,100);} </script> </head> <body> <center> <script type="text/javascript"> // 自動スクロール-下に100 document.getElementById("frame1").contentWindow.scrollBy(0,100);} </script> <!-- 縦スクロール --> <form> <input type="button" value="up" onClick="JavaScript:framescrollu()"> <input type="button" value="down" onClick="JavaScript:framescrolld()"> </form> <br> <iframe id="frame1" src="aaa.html" name="frame1" frameborder="1" scrolling="auto" width="200" height="200"> </iframe> </center> </body> </html> aaa.html ああああああああああああああああああああああ<br> いいいいいいいいいいいいいいいいいいいいいい<br> うううううううううううううううううううううう<br> ええええええええええええええええええええええ<br> おおおおおおおおおおおおおおおおおおおおおお<br> ああああああああああああああああああああああ<br> いいいいいいいいいいいいいいいいいいいいいい<br> うううううううううううううううううううううう<br> ええええええええええええええええええええええ<br> おおおおおおおおおおおおおおおおおおおおおお<br> ああああああああああああああああああああああ<br> いいいいいいいいいいいいいいいいいいいいいい<br> うううううううううううううううううううううう<br> ええええええええええええええええええええええ<br> おおおおおおおおおおおおおおおおおおおおおお<br>

専門家に質問してみよう