JavaScript等を用いてリンクを抽出しようとすると、次の3点の問題が出てきます。
1. については、描画のタイミングで解決できます。配列に収めたリンクに関する情報達を、検索エンジンの結果のように小分けすれば良いだけです。また、同じリソースへのリンクを纏めてしまうことで、かなり速度を短縮できる例もあります。
2. は、例えばjavascriptスキームに頼っていたり、onclick属性にJavaScriptコードを記述しつつhref属性が「#」になっていたりするa要素が原因になります(例:<a href="javascirpt:jump(uri)">)。
3. が問題です。「ここをクリック」をどう解決するか、と言い換えてもいいでしょう。これは実際に文脈全体を把握する以外にありませんが、このようなタイプのリンクを抽出して一体どれだけの利益があるのかということも考える必要がありそうです。
前述の2. の問題は、fub_netのカスタムパネル上ならば解決できます、これは画期的なことだと思います。何故なら、JavaScriptを無効にしている際にこれらのアンカーに出くわしたとしても簡単にリンクを利用できるからです。例えば、javascript:jump(uri)の例では、uriを正規表現で抽出するとかいう方法ではなく、window.jump(uri)を実行すればよいのです。windowオブジェクトはアクティブタブのものであり、JavaScriptが有効になっているカスタムパネル上から実行します。
問題が無いわけでもありません。制作者がexternalオブジェクトを利用していた場合などは、警告ダイアログ等を出す必要があるでしょう。完成度を高めるには「実戦」経験が必要になると思います。ブラウザクラッシャーを経験しなければ駄目です。
カスタムパネル上でActiveXを解禁にすれば、例えば拡張子が不明な、あるいは信頼できないリソースでも、HEADリクエストを送ってMIME typeを調べることなどが可能です。
ともかく可能性が大きすぎて目がくらくらしてきます。何から手をつけるかということをこのように事前に纏めておかないと、色々なことに手をつけ始めて頭がパンクしてしまいますよ。ここ数日はJtrEntで実戦経験を積んでいましたが、そろそろ何か台本を書きたくなってきました。
脱線しますが、先日msdn (英語)をうろうろしていた際、scrollIntoView (英語)なるメソッドを見つけました。DOMでいうElement全般が実装している模様です。
var elm = document.getElementById('some_id');
elm.scrollIntoView();
このように使用可能です。window.scrollよりも良い点は、例えばoverflow:scroll
、またはoverflow:auto
というCSS宣言によってスクロールバーが表示されている「コンテナ」でさえもスクロールさせ、目的の要素を表示できることです。