ホームページ雛形でiframeのsrcを変更するscriptを設けるとスマホで表示した場合にページの先頭ではなくiframeのブロックまでスクロールして表示してしまう問題。トップページはスクリプトをコメントアウトしたので今では再現できないが予定表のページでは再現される。ヘッダやフッタなどの中身を削除して単純化したhtmlソースで実験中。
これまでの所、iframeのsrcを変えただけでは再現されず、iframeのsrcのページ内リンク(#)を親ページのページ内リンクであるかのように振る舞っている模様。
さらに分かったこと。scriptは関係ない。iframeのsrcにハッシュタグを使ったページ内リンクを付加しておくと、フレーム内ページのページ内リンクとしてだけでなく、親ページのページ内リンクと認識するらしい。
確認しているスマホのOSとChromeのバージョンは次の通り。
OS: Android 5.0.2; SH-01G Build/S9280
Chrome: 90.0.4430.66
さらに分かったこと。PCのChromeでも同じ症状が確認できた。今後はPCのChromeで確認する。
さらに分かったこと。Microsoft Edge でも同じ症状が確認できた。
・phpサーバーのファイル

test1.html、src="test0.html"、test0.html に「location.href = '#top';」

test2.html、test1.htmlと同じ。ただし、test0.htmlはスターサーバーフリー。

test3-0-1.html、test3-0.htmlにフレーム内再表示のリンクを追加。

・スターサーバーフリー内のファイル

test1.html、src="test0.html"、test0.html に「location.href = '#top';」

test2.html、test1.htmlと同じ。ただし、test0.htmlはphpサーバー。

test3.html、「#~」の代わりに「?~」を使って(src="test00.html?y500")、test00.html でscrollToのjavascriptを使う方法で対処。

test3-0.html、test3.htmlの対処前(src="test00-0.html#y500")のファイル

test3-1.html、test3-0.htmlのiframeに「sandbox=""」を追加。

test3-1-F.html、test3-0.htmlのiframeに「sandbox="allow-same-origin"」を追加。Firefoxでもバグを発生させようと試したファイル。失敗。

test3-2.html、教えて!gooで見つけた2006/10/13のバグを基にしたリンクをクリックした場合のバグ再現。「a href="test00-2.html#y200" target="test00"」など。

test3-2-00.html、test3-2.htmlのバグを一つのファイルで真似したもの。(iframeをdivにしてtest00-2.htmlのbody内を入れた)

・参考サイト

【珍現象】iframeのsrcに”#”を指定すると

IFrame内部で名前付きリンク(アンカー)を使用すると勝手にスクロールする- HTML・CSS | 教えて!goo

・対処法テスト
・対処前。・test3-0.htmlマイクロソフト コミュニティで質問。
test3.html、「#~」の代わりに「?~」を使って、test00.html に次のjavascript。(参照)

function scrollToid(){
var id = location.search.slice(1);
var y0 = document.body.getBoundingClientRect().top;
var y1 = document.getElementById(id).getBoundingClientRect().top;
window.scrollTo(0,y1-y0);
}

test3-1.htmltest3-0.htmlのiframeに「sandbox=""」を追加。

Googleサイトを利用してホームページを作るテスト

ひとりネズミ(Googleサイト)

Google スプレッドシートを挿入するテスト