質問: とあるポータルサイトを作成しています。 遷移前のページには「test.php?id=00#aaa」のような感じでリンクがあります。 遷移後のページでは bbb としております。 さて、遷移後のページなのですが、データベースからMySQLを使って条件に合うものを取り出して表示するので、コンテンツ量が一定でありません。 文章が2,3行だけのページもあれば、画像も文章もたくさんの場合もあります。そのため、「高さを一定」にできません。 (phpファイル自体は一枚です。それで何千・何万という種類のコンテンツページを表示することになります) このような環境下で上記のソースを置くと、遷移後のページのコンテンツ量が少ないときは、大体そのアンカータグのところに飛んでくれるのですが、コンテンツ量が非常に多いと、なぜかずれたところに飛んでしまいます。 これはブラウザが、読み込みの最中にそのアンカータグのところに移動してしまい、移動後に画像等を読み込んでしまうからずれる、と推測します。 ブラウザバック等で戻って再度リンクをクリックすると、今度は正しい位置に飛んでくれます(きっとPC内に全部のコンテンツが読み込まれているからと推測します)。 そこで「全部を読み込むまで表示しない」をjavascriptで実装したところ、 たしかに、全部読み込むまで表示はしないのですが、なぜか、「間違ったところに先に移動してしまう悪いクセは解消されず、間違ったところで全部を読み込むまで待っている」のです。 結局、ずれたところに飛んだ状態で表示されます。 何とかブラウザに、「全部読み込むまでじっとしていてもらい、すべてが読み込まれてからしかるべき場所に移動してほしい」とネットで色々調べたのですが、うまく見つからず、こちらに投稿させていただいた次第です。 さて、皆様にご質問です。 1.タイトルの通り、「webページで別ページよりリンク先のすべてのコンテンツを読み込んでからアンカータグに移動したい」ということは可能なのでしょうか?可能であれば、どのように実装すればよいかご教授いただきたいです。言語はphpまたはjavascriptでお願いいたします。 私の先入観では、アンカータグと言うのは、ページ内リンクのように全てのコンテンツを読み込んだ上で利用する、あるいは、div・画像等高さが正確に設定されている静的ページに対して指定できるもの、と思っておりました。 2.もしブラウザの仕様等で上記のことが不可能な場合、そのエビデンス・証拠等はございますでしょうか。 お客様(発注者様)に「できません」というときに、私の力不足でできないのではなく、「そういうものです」という確たる証拠を提出できれば、お客様も納得していただけると思います。 以上、どうぞよろしくお願いいたします。
回答: jQueryを使用して以下の記述ではどうでしょうか。 ``` $(document).ready( function(){ windown.location.href = "#aaa" ; }); ``` onloadとjQueryのreadyの違いはこちらを参照。