- 締切済み
ブラウザの頁内移動についての質問です。
ブラウザの頁内移動についての質問です。 私は現在、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を設定しても前の頁に戻れる 方法がお分かりの方、お教えいただくと非常に助かります。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- my--
- ベストアンサー率89% (91/102)
history.go((history.length * -1)) いまいち把握できていないので、外してるかも知れませんが 使えないでしょうか。
- fujillin
- ベストアンサー率61% (1594/2576)
#1です。 >onload()は適当に名前をつけているだけです。 ひたすら、混乱しました。 >frame内のアプリですのでwindow.scrollTo()は動作できません。 ?意味が理解できません。 frame内ということはHTMLベースだと想像しますが、通常ならscrollToは効きますけれど? 試しに、overflow:hiddenなどにしてみても大丈夫でした。 クライアントサイドで動作する、Webブラウザベースのjavascriptのことでいいんですよね?
- fujillin
- ベストアンサー率61% (1594/2576)
通常のブラウザ+HTML環境ですと、ご提示の onload() { } は動作しませんので、どのような環境なのかよくわかりませんが… とりあえず、ありそうなのはスクリプトでのページ内移動を、履歴にカウントしているかいないかの違いだけなのでは? IEの場合は、戻るを2回クリックすれば戻りませんか? 改善方法は表示レイアウトを変えて、最初に移動しないようにする。 または、hashを利用してないで、スクリプトで表示位置を移動する。 くらいでしょうか? 通常なら↓で表示位置を移動できますけど、環境が不明なので違うのかも? http://www.htmq.com/js/window_scrollto.shtml
補足
回答ありがとうございます。 申し訳ありません。 onload()は適当に名前をつけているだけです。 onloadイベントの直後に呼ばれると思ってください。 >IEの場合は、戻るを2回クリックすれば戻りませんか? リダイレクトと同じで2回クリックすれば戻るのですが、 そこを1回で戻すようにしたいのです。 >通常なら↓で表示位置を移動できますけど、環境が不明なので違うのかも? frame内のアプリですのでwindow.scrollTo()は動作できません。 SNSのアプリですので、frame内で動作するのは必須ですし、SNSアプリとして 認定されるのに、戻るボタン1回で前の頁に戻るのも必須なのです。 「IEなんて嫌いだー」の気持ちですが、IE未対応なんてできるわけもなく 途方にくれている状況なのです。
補足
>クライアントサイドで動作する、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で履歴を残さない方法 がお分かりでしたら、お教えください。