プロが教えるわが家の防犯対策術!

aaa.phpにいるとします。
bbb.phpのページには特集B1(a name="b1")、特集B2(a name="b2")、特集B3(a name="b3")とあるとします。

aaa.phpから、bbb.phpの特集B3に飛ばしたいので、
セオリー通り<a href="bbb.php#b3">でジャンプさせたのですが、
B3まで飛ばずにB2あたりでとまったりすることがあります。

ロードが読み込みきれていなくて、ジャンプが不完全になってしまうのでしょうか?
この改善はできるのでしょうか?
ブラウザ・回線の限界でしょうか?

A 回答 (7件)

>セオリー通り<a href="bbb.php#b3">でジャンプさせたのですが、


>具体的にはbbb.php?get=1#b3 のようにとばしています。

QUERY_STRINGSではなく、標準入力、あるいはPATH_INFOでデータを渡すほうがよいです。
#---部分識別子(fragment identifier)が、QUERY_STRINGSに続く場合、ブラウザはそれを取得できない場合があります。

[テスト]
http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi[***********]#form_check
で、[***********]の部分を
?name=abc&sex=male&l_like_green=on&l_like_cyan=on&text=ttt
/name~abc/sex~male/l_like_green~on/l_like_cyan~on/text~ttt
あるいは、フォームに上記値を入力してテストしてください。
 一番上はQUERY_STRINGS
 二番目は、PATH_IBFO
 三番目は標準入力になります。

 
    • good
    • 0

>最初の数器用目に終端アンカーがあればそこに飛ぶはずです。


ではなくて「最初の数行目に」です。また、QUERY_STRINGSを少なくして。
 それでOKならブラウザの問題です。
    • good
    • 0
この回答へのお礼

大変遅くなり申し訳ありません。

ずっとpath_infoとは何ぞやと勉強していたのですが、
残念ながら私では理解できませんでした。

今回のジャンプの件は諦めようと思います。
ありがとうございました。

お礼日時:2011/05/11 12:11

>動的URLを静的URLに変更する記述をhtaccessに設置しました。



意味ありません。
URIに使用できる文字は、;\/?:@&=+\$,A-Za-z0-9\-_.!~*'()だけです。
 RFC 2396 - Uniform Resource Identifiers (URI): Generic Syntax
 ( http://tools.ietf.org/html/rfc2396 )

#はブラウザからサーバーには送られないデータで、たとえサーバーから提供されても無視されます。

 単純にブラウザが#以下の文字列を理解していないか<ページレイアウトを決定するのに時間がかかっているだけです。
最初の数器用目に終端アンカーがあればそこに飛ぶはずです。
    • good
    • 0

説明を補完しておきます。


#以降はサーバーには送られません。先のURLに対してもFirefox+Live HTTP Headersで確認すると
http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi#form_ …
という入力に関して
GET /Iruka/ENV_FORM.cgi HTTP/1.1
Host: hpcgi1.nifty.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 (.NET CLR 3.5.30729)
・・・【以下略】・・・
と要求されます。
 したがって、そのデータが送られてきた後でユーザーエージェントがそのファイル内の終端アンカーを探すのですから、回線などの影響は考えられません。

 IEでよく聞くトラブルですので、ブラウザの能力と考えるほうがよいでしょう。QUERY_STRINGSと、#以降を区別できていない(^^)。
 そのために、サーバーに要求するときはPOSTの標準入力で渡すか、PATH_INFOを使って渡すほうが確実です。サーバーサイドのプログラムを見直しましょう。

この回答への補足

悪戦苦闘してまして返事が遅くなりました。

動的URLを静的URLに変更する記述をhtaccessに設置しました。

RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteBase /detail
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule bbb-([0-9]+)\.php#b3$ bbb.php?get=$1#b3 [L]

bbb-1.php#b3 へのアクセスで
bbb.php?get=1#b3 に飛ぶように。

ただ、アドレスバーに直接URLを打てば飛ぶのですが、
phpファイル内にリンクとして記入してもエラーになってしまいます。

補足日時:2011/04/29 14:49
    • good
    • 0

#2 です。


直接的にはクエリは関係ないはずです。
サーバサイドの処理に時間がかかっていることが影響している可能性はありますが…。

あと思いつくのは JavaScript が誤動作している可能性を考慮して [インターネットオプション] で JavaScript をオフに設定してみるぐらいでしょうか。

全てのページで発生するのでしょうか?特定のページだけでしょうか?
不具合の発生条件を特定していくのが先決だと思います。
    • good
    • 0

クエリの有無は関係ないと思います。


http://oshiete.goo.ne.jp/qa/6698597.html?sort=da …

他に考えられる理由は…。

・tableレイアウトをしていて描画に時間がかかっている
・移動が完了する前にマウスorキーボードでスクロールしている

この回答への補足

tableはジャンプ先の同一ページ内の別の部分に使っていますが、
そんなに重たくないはずです・・。
そしてマウス等はノータッチです。

FIREFOXだと問題なく、IEだと6でも7でも8でも駄目です。

formでデータベースを探しているから
多少遅延は起きるかもしれませんが、クエリは関係ないんですよね?
参りました。

補足日時:2011/04/28 01:40
    • good
    • 0

どこも触らず、ページがすべて(そのページ内アンカーの位置まで)読み込まれるまで待てばたどり着くはず。

この回答への補足

やはり待ってもだめでした。

1つ気になるのが、aタグではなく、form(get)で飛ばしています。
具体的には
bbb.php?get=1#b3 のようにとばしています。

formだと非推奨なのでしょうか?

補足日時:2011/04/28 00:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!