
次のようなソースのファイルを作ってChromeで表示してみたらページの先頭からではなくiframeの所から表示されてしまいました。
ページを表示した後、先頭までスクロールしてからリロードすれば先頭から表示されるのですが、ソースにある「このページへのリンク」などリンクをクリックして表示した場合は先頭ではなくiframeの所から表示されます。
これはChromeのバグでしょうか? 仕様でしょうか?
仕様だとしたら、どうしてこのような仕様になったか、ご存知の方がいらっしゃいましたら教えてください。
test1.html
http://hitorinezumi.html.xdomain.jp/test1.html
↓
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Chromeのiframeのバグ?</title>
</head>
<body>
<div style="height:200px;">
バナー、ヘッダなど。
</div>
<div style="height:250px;">
<h4>↓↓↓iframe↓↓↓</h4>
<iframe src="test0.html" id="test0" title="test0"></iframe>
</div>
<div style="height:1000px;">
<a href="test1.html">このページへのリンク</a>
</div>
</body>
</html>
test0.html
↓
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>iframe内</title>
</head>
<body>
<p>iframe内</p>
<script type="text/javascript">
<!--
location.href = '#top';
-->
</script>
</body>
</html>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
javascriptでurlパラメタにシャープ(#)を含む文字列を渡した場合、#以下は無視されてしまうそうなので、encodeURIComponentなどを使うと良いそうですが参考になりますでしょうか?
ソース
http://affi0.blog61.fc2.com/blog-entry-1203.html
ご回答、ありがとうございます。
たぶん関係ないと思います。
例えば、
test1.htmlで
<iframe src="test0.html#top" id="test0" title="test0"></iframe>
と書いても同じ現象が生じます。
そう書くとsrcに「#~」があるから生じる問題のように見えちゃうので、質問のようにしました。Javascriptのせいではないと思います。
iframeの中のページを「#~」までスクロールさせる他の方法が分からなかったのでJavascriptを使いましたが…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bodyにidをつける理由は何ですか?
-
(Javascript)印刷するファイル...
-
bodyタグって2重にしようするこ...
-
bodyにwidth:100%をつける理由は?
-
WEB上で編集できない、スク...
-
<a href="#" …>の意味を教えて...
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
javascriptでalertの文字列をコ...
-
スマホ上で、左右スワイプで次...
-
submitボタンで他のフレームを...
-
印刷時に消したいjavascriptがある
-
SCRIPT5007: 未定義または NULL...
-
cssにjavascriptを入れる?呼び...
-
ウィンドウ名の設定
-
undefinedが表示されてしまう
-
外部ファイル名を変数で指定で...
-
window.openの件について
-
ポップアップウィンドウの位置
-
画像ファイルのアドレスに今日...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クリックしたら記事が表示・非表示
-
bodyにidをつける理由は何ですか?
-
(Javascript)印刷するファイル...
-
テキストボックス内にハイパー...
-
横スクロールを右から左へ・・・
-
スクロールバーのスクロール量...
-
"mailtoでメールの【氏名】【性...
-
ハイパーリンクに下線を表示す...
-
WEB上で編集できない、スク...
-
複数のiframeの読み込みについて
-
【HTML】フレームの中央寄せに...
-
ページの読み込みが完了してか...
-
フラッシュを用いた拍手のラン...
-
★質問★スクロールバーを使わず...
-
別ページのページ内リンクでの...
-
プログラムの仕組みを教えて下...
-
WSHでのIE制御について
-
リンクの説明文を指定のテキス...
-
<HR>タグでつくる四角形につい...
-
ボタンが押されたらWebページの...
おすすめ情報
ちなみに、次のようなページもありました。
【珍現象】iframeのsrcに”#”を指定すると
https://www.softel.co.jp/blogs/tech/archives/2780
そのページは2011/11/12に書かれたものらしいです。
その時から変わってないのかもしれません。
私が気付いたのは今年でした。
ちなみに、私は普段はFirefoxを使っていて、Firefoxでは生じません。
だから気付くのが遅れたのですが…。
ちなみに、質問で「先頭からではなくiframeの所から表示され」るのはtest1.htmlのことです。
http://hitorinezumi.html.xdomain.jp/test1.html
test0.htmlには「id="top"」がありませんが「#top」は機能するようです。「#frg」など適当な文字列では無視されてtest1.htmlに影響を与えません。
test0.htmlに「id="frg"」がある場合は、test0.htmlで「#frg」を使って途中から表示させると、test1.htmlはiframeの所から表示されてしまいます。
ご自身のサーバーで再現する際の注意事項が増えました。
質問のソースでtest1.htmlとtest0.htmlは同じサーバー内にありますが、
test0.htmlが別のサーバーにある場合だと、質問のような現象は起こらないことを確認しました。
http://hitorinezumi.html.xdomain.jp/test2.html
また、質問のソースではiframeのsrcが相対パスになっていますが、絶対パスに変えても変わりませんでしたので、質問のようなことが生じないようにするには、iframeのsrcを絶対パスで書けば良いのではなくて、iframeで表示するページを別のサーバーに置けば良いようです。しかし、それは現実的な対策ではないので、同じサーバーのファイルを表示する場合でも質問のようなトラブルが起こらないようにしたいと思っています。