掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Webブラウザコントロールでオブジェクトをウィンドウの上端までスクロールさせて表示させるには? (ID:101275)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Hongliangさん、ご回答有り難うございます。 色々試して下さって有り難うございます。 教えて頂いたことをもとに下記のようにしてみた。 するとうまく表示することができた。 有り難うございました。 ただ、いろいろなサイトで試しているうちにちょっと問題が発生しました。 サイトによって、現在のスクロールバーの位置によって違う位置が表示されてしまうようです。(コマンドボタンを押すたびに位置が変わる。) > IE だと DOCTYPE が宣言されてる場合 は documentElement になりますが とおっしゃるように、「ownerDocument」のあとに「Body」を付けるか「documentElement」付けるかで場合分けしなければいけなくなるようなときがあるようです。 しかしその場合分けの仕方がわかりませんでした。 ウォッチウインドウで「objRange.parentElement.ownerDocument.doctype」の値を調べたのですが、 どちらの場合も Nothing になっていました。 どうやったら場合分けができるのでしょうか? どうかよろしくお願いいたします。 Private WithEvents Doc As HTMLDocument Dim IE As Object Private Sub Form_Load() Dim url As String ''実験その1 ' Text1.Text = "Variant" ' url = "http://madia.world.coocan.jp/vb/vb_bbs/200505/200505_05050074.html" '実験その2 Text1.Text = "Basic" url = "http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1320299018" Set IE = CreateObject("InternetExplorer.Application") IE.Navigate2 url IE.Visible = True End Sub Private Sub Command1_Click() If IE Is Nothing Then Exit Sub Dim Doc As Object 'MSHTML.HTMLDocument Dim Body As Object 'MSHTML.HTMLBody Dim objRange As Object 'MSHTML.IHTMLTxtRange Dim BMK As String 'Dim L As Long '検索文字列を入れておいてください。 If Len(Text1.Text) = 0 Then Exit Sub Set Doc = IE.document Set Body = Doc.Body Set objRange = Body.createTextRange '≫≫≫≫≫ 検索開始 'For L = 0 To 255 ' If objRange.findText(Text1.Text) = False Then Exit For Do While objRange.findText(Text1.Text) '最初に見つかった位置を保存しておきます。 If Len(BMK) = 0 Then BMK = objRange.getBookmark '検索した語句を黄色く反転させる。 objRange.execCommand "BackColor", False, "YELLOW" '論理カーソル位置を、検索した語句の末尾に移動させる。 objRange.collapse False Loop 'Next L '≪≪≪≪≪ 検索終了 'ついでに、最初に見つけた語句の位置までスクロールさせています。 If Len(BMK) Then objRange.moveToBookmark BMK ' objRange.scrollIntoView True 'ここに True を加えただけです。 'objRange の位置情報。 z1 = objRange.boundingLeft z2 = objRange.boundingTop z3 = objRange.boundingWidth z4 = objRange.boundingHeight z5 = objRange.offsetLeft z6 = objRange.offsetTop 'サイトによって場合分けしないといけない。 'そうしないとコマンドボタンを押すたびに位置が変わる。つまりスクロールバーの位置によって結果が変わってくる。 ''「実験その1」のときは ' cw = objRange.parentElement.ownerDocument.Body.clientWidth 'Docの表示領域のクライアント領域のサイズの幅。 ' ch = objRange.parentElement.ownerDocument.Body.clientHeight 'Docの表示領域のクライアント領域のサイズの高さ。 ' z7 = objRange.parentElement.ownerDocument.Body.scrollLeft '現在の水平スクロールバーの位置 ' z8 = objRange.parentElement.ownerDocument.Body.scrollTop '現在の垂直スクロールバーの位置 '「実験その2」のときは cw = objRange.parentElement.ownerDocument.documentElement.clientWidth 'Docの表示領域のクライアント領域のサイズの幅。 ch = objRange.parentElement.ownerDocument.documentElement.clientHeight 'Docの表示領域のクライアント領域のサイズの高さ。 z7 = objRange.parentElement.ownerDocument.documentElement.scrollLeft '現在の水平スクロールバーの位置 z8 = objRange.parentElement.ownerDocument.documentElement.scrollTop '現在の垂直スクロールバーの位置 'スクロールさせる。検索語の右端がウインドウに収まるように調節している。 objRange.parentElement.ownerDocument.parentWindow.scrollTo z7 + z5 - cw + z3, z8 + z6 End If '最後は一応、後始末を。 Set objRange = Nothing Set Body = Nothing Set Doc = Nothing End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.