最初に書いた様に、JavaScriptは初心者だ。対象となるオブジェクトが分かれば最初の取りかかりが分かるので、そのオブジェクトの名前を知りたかった。オブジェクトが分からないのに、JavaScriptなどは書けない。私の説明も足りないのであるが。
どうやら、スクロールと言うのがWindowのオブジェクトでそれなりの物があるらしいと言う事で、少しJavaScriptを追加した。確かに少しは希望する動作には近づいてはいるが、完全解決では無い。環境はWindowsXP,Operaを使っている。<html>
<head>
<title>内部リンク動作の確認</title>
<script type="text/javascript" language="javascript">
<!--
function sample() {
window.scrollBy(0,50);
}
// -->
</script>
</head>
<body>
<a href="javascript:sample()">1:</a>とにかく、色々とある。色々だ。<br>
<a href="javascript:sample()">2:</a>何とかかんとか<br>
<a href="javascript:sample()">3:</a>何とかかんとか<br>
</body>
</html>この中で、クリックした行を画面の最上位の先頭行に移動させたい。と言うのがこのHTMLファイルを作製する目的だ。最初に書いた様に、Internet Explorerでは、Javascriptを書かなくても単なる内部リンクの操作だけで、希望とする動作が得られる。所が、Operaは動作しない。今の問題は、単にスクロールするだけでは無くて、スクロールする量を計算しないと目的の動作は得られない。
当然、スクロールする量はクリックした時の位置をビクセル単位で取得しないといけない。ウインドウの大きさも必要だ。当然、フォントの大きさでピクセルのサイズも異なる。これらを計算して、それをスクロールする関数へ引数として渡さないといけない。果たして、この様な事は出来るのだろうか?