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