• 締切済み

ブラウザの頁内移動についての質問です。

ブラウザの頁内移動についての質問です。 私は現在、Javascript+PHPでSNSアプリを作成しています。 SNSアプリはプラットフォーム(SNS)上のframe内で動作します。 アプリの表示位置移動をwindow.window.scrollToが使用できないので location.hashを使用して行なっているのですが、IEでlocation.hash を使用するとブラウザの戻るボタンが挙動が意図しない動作になります。 オンロード時に以下の処理を実行します。 onload() { location.hash="#PageTop"; // アプリのトップを画面のトップに移動する 以降の処理 } この後、戻るボタンをクリックしても前の頁には戻らす、onload()の処理が 実行されます。 firefox、Chromeなどは前のページに戻ってくれるのですがIEだと 上記のようになり無限ループのような状況になります。 オンロード時に「アプリのトップを画面のトップに移動する」処理は必須であり ますのではずせません。 他に頁内移動する方法か、IEでlocation.hashを設定しても前の頁に戻れる 方法がお分かりの方、お教えいただくと非常に助かります。

みんなの回答

  • my--
  • ベストアンサー率89% (91/102)
回答No.3

history.go((history.length * -1)) いまいち把握できていないので、外してるかも知れませんが 使えないでしょうか。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >onload()は適当に名前をつけているだけです。 ひたすら、混乱しました。 >frame内のアプリですのでwindow.scrollTo()は動作できません。 ?意味が理解できません。 frame内ということはHTMLベースだと想像しますが、通常ならscrollToは効きますけれど? 試しに、overflow:hiddenなどにしてみても大丈夫でした。 クライアントサイドで動作する、Webブラウザベースのjavascriptのことでいいんですよね?

mstokwave
質問者

補足

>クライアントサイドで動作する、Webブラウザベースのjavascriptのことでいいんですよね? はい、そのとおりです。 >frame内ということはHTMLベースだと想像しますが、通常ならscrollToは効きますけれど? >試しに、overflow:hiddenなどにしてみても大丈夫でした。 私が開発しているSNSアプリはSNSが提供するプラットフォーム上のiframe内に 展開されます。 親であるプラットフォームにアクセスはできません。 「window.top.scrollTo」など実行すると「Permission denied」でエラーとなります。 やりたいことは以下のようなことなのですが SNSプラットフォーム(HTML)内のiframeに当方作成のアプリ(HTMLベースJavascript)があり アプリ内のイベント発生時にアプリのtop(y座標:0)を画面の上部に移動させたい。 解りますかね?(逆に意味不明になったかな?) 色々試してみてアプリの位置を動かせたのがlocation.hash だったのですが、IEの場合はご指摘のとおり履歴が残ってしまい、 「戻る」ボタンを押すとアプリの位置移動前に戻ってしまいます。 そしてSNSの規定で「戻る」ボタンを押すと前の画面(頁)に戻る必用 があると通達されたのです(泣) ほかに頁内位置移動できる方法か、location.hashで履歴を残さない方法 がお分かりでしたら、お教えください。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

通常のブラウザ+HTML環境ですと、ご提示の  onload() {   } は動作しませんので、どのような環境なのかよくわかりませんが… とりあえず、ありそうなのはスクリプトでのページ内移動を、履歴にカウントしているかいないかの違いだけなのでは? IEの場合は、戻るを2回クリックすれば戻りませんか? 改善方法は表示レイアウトを変えて、最初に移動しないようにする。 または、hashを利用してないで、スクリプトで表示位置を移動する。 くらいでしょうか? 通常なら↓で表示位置を移動できますけど、環境が不明なので違うのかも? http://www.htmq.com/js/window_scrollto.shtml

mstokwave
質問者

補足

回答ありがとうございます。 申し訳ありません。 onload()は適当に名前をつけているだけです。 onloadイベントの直後に呼ばれると思ってください。 >IEの場合は、戻るを2回クリックすれば戻りませんか? リダイレクトと同じで2回クリックすれば戻るのですが、 そこを1回で戻すようにしたいのです。 >通常なら↓で表示位置を移動できますけど、環境が不明なので違うのかも? frame内のアプリですのでwindow.scrollTo()は動作できません。 SNSのアプリですので、frame内で動作するのは必須ですし、SNSアプリとして 認定されるのに、戻るボタン1回で前の頁に戻るのも必須なのです。 「IEなんて嫌いだー」の気持ちですが、IE未対応なんてできるわけもなく 途方にくれている状況なのです。

関連するQ&A

  • ブラウザが判別出来ない。

    お世話になっております。 JavaScriptの本を購入しました。 その本にブラウザ判定のスクリプトが掲載されており、それをそのままアップしたところ、私はIE6なのにIE4と判別されてしまいました。 下記がそのスクリプトです。 ちなみに、私はXPのIE6です。 このスクリプトはこれで完璧なのでしょか? また、出来ましたら、このスクリプトを試していただけたらと思うのですが・・・よろしくお願い致します。 <script language="JavaScript"> <!-- if( navigator.appVersion.charAt(0)==4){window.location.href = "nn4.html"} // NN Ver4 の場合 if( navigator.appVersion.charAt(0)==5){window.location.href = "nn5.html"} // NN Ver5 の場合 if( navigator.appVersion.charAt(0)==6){window.location.href = "nn6.html"} // NN Ver6 の場合 } if( navigator.appName.charAt(0)=="M"){ if( navigator.appVersion.charAt(0)==2){window.location.href = "ie2.html"} // IE Ver2 の場合 if( navigator.appVersion.charAt(0)==3){window.location.href = "ie3.html"} // IE Ver3 の場合 if( navigator.appVersion.charAt(0)==4){window.location.href = "ie4.html"} // IE Ver4 の場合 if( navigator.appVersion.charAt(0)==5){window.location.href = "ie5.html"} // IE Ver5 の場合 if( navigator.appVersion.charAt(0)==6){window.location.href = "ie6.html"} // IE Ver6 の場合 } //--> </script> <noscript>JavaScript を使用しています。JavaScript を有効にしてください。</noscript>

  • window.onloadが、ブラウザ(Firefox)で戻る場合に動作しない

    「Flash版地図API」の導入作業をしています。 地図内にマーカーを付けるために、以下のように記述しました。 <script language="JavaScript" type="text/javascript"> <!--常にマーク表示--> window.onload = function() { thisMovie('YFMap').addIcon('tokyo', '35.60714835619635', '139.3955620148672', '<a href="/">東京'</a>, 'L1'); } </script> window.onload は、ブラウザを開くたびに実行されると思います。 IEでは、問題ないのですが、Firefoxの場合、表示されたマークをクリックして次のページへ移動して、その後、ブラウザで戻ってくると、マークが表示されないのです。 どうやら、Firefoxの場合、「window.onload」は、ブラウザから戻ってきた場合は動作していないのでは?と想像しています。 この場合、どのように記述するのが良いのでしょうか?ご指導宜しくお願い致します。 ※ javascriptの知識はほとんどありませんので、具体的なソースで教えて頂きたいです。

  • ブラウザの「戻る」ページ遷移でリロード

    既に同種の質問がありましたが、解決されなかったようなので質問させて下さい http://okwave.jp/qa/q6381146.html ページ内に埋め込んだURL(iframeで埋め込み)の参照先が時系列で変化する為、ページ遷移等をして戻った場合にはリロードさせたいのですが、過去の質問のようにIEであれば <script type="text/javascript"> <!-- window.onunload = function(){location.reload();} --> </script> で難なくクリア出来たのですが、他ブラウザ(Firefox・Safai・Google Chrome)ではリロードされません。 公に公表されるページなので、せめて上記の3ブラウザではブラウザの「戻る」「進む」でのページ遷移時にリロードさせたいと考えています。 ちなみに、iframeに特別拘りは無いので「他の方法で埋め込めば・・・」等ありましたらお教え頂けたら幸いです。 宜しくお願い致します。

  • Safariを判別し別ページに飛ばすには

    javascriptでブラウザを判別して、ブラウザによって違うページに飛ばしています。 基本的にはIEとそれ以外なのですが、Safariだけが別ページに飛んでくれません。(index.htmlにいたままになる) 下記のようにしていますが、どうすれば飛ぶようになるでしょうか? よろしくお願いします。 <script type="text/javascript"> if(navigator.userAgent.indexOf("MSIE") != -1){ window.location.href = "index.html";}     : else if(navigator.userAgent.indexOf("safari") != -1){ window.location.href = "index2.html";} </script>

  • history.back使用時、ページトップへ移動

    お世話になります。 javascriptのonClick="history.back()"で前ページに戻った際、ページの最上部に移動したいのですが、どのように書けば良いでしょうか。 history.back先のページに window.onload = function () {$(window).scrollTop(0);} と書いたのですが、最上部に移動せず悩んでおります。 お時間がある際に、ご回答いただけましたら嬉しいです。

  • onclickでのページ内移動

    JavaScriptでページ内移動をしたいのですが HTMLでいうところの <a name="top"></a> <a href="#top"></a> をonclickで動作させたいのですがどうすれば出来ますか。 http://www.htmq.com/js/window_open.shtml で載っているのですが、これは新しいウィンドウを開くでwindow.openのところを変えれば出来ると思いますが どういう風に変えるのでしょうか。よろしくお願いします。

  • ページのURLを知りたい

    Webページを移動しても、URLがトップページのアドレスのまま 変わらないサイトがあるのですが、画面に表示しているページの URLを知る方法があれば教えてください。 ・フレームで切られているようには見えません。 ・ページのプロパティを確認してもトップページと同じアドレスになっています。 ・新しいウィンドウで開くことができません。 使用ブラウザ:IE8 どうぞよろしくお願いします。

  • Webブラウザの閉じるボタン無効化についての質問

    お世話になります。 現在、ASP.NET(C#)にてIEブラウザの閉じる(×)ボタンを 非表示にするあるいは無効にする処理を加えようとしています。 現行では、JavaScriptのonbeforeunloadにて閉じるボタン 押下時の処理を加えています。 しかしながら、処理を加えた後閉じるボタンを押下した際に 「このページからほかのページに移動しますか?」確認MSG が表示されてしまいまして、「OK」を押下すると画面が閉じて しまいます。 IEの閉じるボタン無効化の機能が成立しません。 そこで質問としまして、 ・IEブラウザの閉じるボタン無効化 ・IEブラウザの閉じるボタン押下時に表示される  「このページからほかのページに移動しますか?」確認MSG  を非表示にする 方法がございましたら、ご教授お願い致します。

  • 別ページのインラインフレームのアンカーに移動させる方法

    はじめまして、勉強になります。色々調べてやってみたのですがどうしてもうまく動作してくれません。 やりたい内容は、あるページから同一ドメイン内のあるページに飛ばした時にアンカー情報(#~)付きで渡して、渡したページ先のインラインフレーム内のアンカーに移動させたいのです。 下のソースでstr変数がうまく渡っていないのか、受け取り側のスクリプトがまずいのかが分かりません。(ちなみに途中で変数をモニターする方法があるのでしょうか?) 一応次のページのURLバーには?以降のアンカー情報付きで表示されてはいるのですが、その?以降のアンカー情報がインラインフレームのURLに渡っていないような状態です。 以下省略ソースです。 【送信元】 <SCRIPT Language="JavaScript"> <!-- html1 = "飛ばす先.htm"; function watasu(str){ location.href = html1 + "?"+ str; } //--> </SCRIPT> </head> <body ~ <img src="画像.jpg" onClick="watasu('#2')"> 【受信側 親ページ】 <script language="JavaScript" type="text/javascript"> <!-- url1 = "liveevent_test.htm"; function jump2(){ url2 = "読み込むインラインフレーム.html"; str = location.search.substr(1,location.search.length-1); top.インラインフレーム名.location.href = url2+str; //top.インラインフレーム名.location.hash = #アンカー; <--ちなみにこの一行を上の一行と差し替えたら動きました。ですがここは前ページからの変数渡しにしたいのです。 } // --> </SCRIPT> <body ~ onLoad="jump2()">~ <IFRAME SRC="読み込むページ.html" name="インラインフレーム名" >~</IFRAME> どなたかヒントでもいいのでお力添えください…もしかして根本的なやり方がまずいのでしょうか。 よろしくお願いいたします。

  • IEで 画面移動させず FLASH だけ リロードは できますか?

    IEで 画面移動させず FLASH だけ リロードは できますか? こんにちは お尋ね致します。 作成したサイトの、少し長目のページの下の方に、 FLASH を 設置してありまして FLASH だけを 再度、見てもらうために、 少し調べて、再読込み(リロード)のために、 下記フォームを使った(更新ボタン)を設置致しました。 <form> <input type="button" value="もう一度 見る" onclick="window.location.reload();"> </form> これを使って試めしたところ、 Chrome や Firefox などの ブラウザは、 少し長目ページの、下の方の、同じ場所で、 画面移動もせずに、FLASH だけが リロードができるのですが、 IE8 では、上記を使うと、画面自体がページトップに飛んでしまい 肝心のページ下の FLASH の リロードが、見られない様になってしまいます。 お尋ねは、IE であっても、少し長目ページ下の、そのままの位置で、 そこそこ簡単に、FLASH だけの リロードを、行える方法があるか・・・ どうかです。 何か良い解決方法がありましたら よろしくお願い致します。    

    • ベストアンサー
    • HTML

専門家に質問してみよう