ブラウザの特殊な操作 各ブラウザ共通

画面の情報を取得する&画面をスクロールする

Webページのサイズや、表示している画面のサイズ、画面スクロールの位置の取得方法です。
また、表示中の画面をスクロールさせる方法です。

InternetExplorer操作時

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_scroll.html)を使っています

						'InternetExplorerの画面情報を表示する
						MessageBox.Show("InternetExplorerの位置 X座標:" & objIE.Left & " Y座標:" & objIE.Top)
						MessageBox.Show("InternetExplorerのサイズ 幅:" & objIE.Width & " 高さ:" & objIE.Height)
				
						'Web画面の情報を取得する
						MessageBox.Show("Webページのhtml部分のサイズ 幅:" & objIE.Document.DocumentElement.ScrollWidth & " 高さ:" & objIE.Document.DocumentElement.ScrollHeight)
						MessageBox.Show("Webページのbody部分のサイズ 幅:" & objIE.Document.Body.ScrollWidth & " 高さ:" & objIE.Document.Body.ScrollHeight)
						MessageBox.Show("Webページのbody部分のサイズ 幅:" & objIE.Document.Body.ClientWidth & " 高さ:" & objIE.Document.Body.ClientHeight)
						MessageBox.Show("Webページのbody部分のサイズ 幅:" & objIE.Document.Body.OffsetWidth & " 高さ:" & objIE.Document.Body.OffsetHeight)
						MessageBox.Show("表示している画面のhtml部分のサイズ 幅:" & objIE.Document.DocumentElement.ClientWidth & " 高さ:" & objIE.Document.documentElement.ClientHeight)
						MessageBox.Show("表示している画面のhtml部分のサイズ 幅:" & objIE.Document.DocumentElement.OffsetWidth & " 高さ:" & objIE.Document.documentElement.OffsetHeight)  'offsetHeightはWebページの高さが取得される
						MessageBox.Show("スクロール量 X:" & objIE.Document.DocumentElement.ScrollLeft & " Y:" & objIE.Document.DocumentElement.ScrollTop)
				
						'画面スクロール
						objIE.Document.Parentwindow.ScrollTo(100, 100) '座標100,100にスクロールさせる
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_scroll.html)を使っています

						//InternetExplorerの画面情報を表示する
						MessageBox.Show("InternetExplorerの位置 X座標:" + objIE.Left + " Y座標:" + objIE.Top);
						MessageBox.Show("InternetExplorerのサイズ 幅:" + objIE.Width + " 高さ:" + objIE.Height);
			
						//Web画面の情報を取得する
						MessageBox.Show("Webページのhtml部分のサイズ 幅:" + objIE.Document.DocumentElement.ScrollWidth + " 高さ:" + objIE.Document.DocumentElement.ScrollHeight);
						MessageBox.Show("Webページのbody部分のサイズ 幅:" + objIE.Document.Body.ScrollWidth + " 高さ:" + objIE.Document.Body.ScrollHeight);
						MessageBox.Show("Webページのbody部分のサイズ 幅:" + objIE.Document.Body.ClientWidth + " 高さ:" + objIE.Document.Body.ClientHeight);
						MessageBox.Show("Webページのbody部分のサイズ 幅:" + objIE.Document.Body.OffsetWidth + " 高さ:" + objIE.Document.Body.OffsetHeight);
						MessageBox.Show("表示している画面のhtml部分のサイズ 幅:" + objIE.Document.DocumentElement.ClientWidth + " 高さ:" + objIE.Document.documentElement.ClientHeight);
						MessageBox.Show("表示している画面のhtml部分のサイズ 幅:" + objIE.Document.DocumentElement.OffsetWidth + " 高さ:" + objIE.Document.documentElement.OffsetHeight);  //offsetHeightはWebページの高さが取得される
						MessageBox.Show("スクロール量 X:" + objIE.Document.DocumentElement.ScrollLeft + " Y:" + objIE.Document.DocumentElement.ScrollTop);
			
						//画面スクロール
						objIE.Document.Parentwindow.ScrollTo(100, 100); //座標100,100にスクロールさせる
					

					

参考

WebBrowserコントロール使用時

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_scroll.html)を使っています

						'WebBorwserコントロールの画面情報を表示する
						MessageBox.Show("WebBrowserコントロールのサイズ" & webBrowser1.ClientSize.ToString())
				
						'Web画面の情報を取得する
						MessageBox.Show("Webページのhtml部分のサイズ 幅:" & webBrowser1.Document.GetElementsByTagName("html")(0).GetAttribute("scrollWidth") & " 高さ:" & webBrowser1.Document.GetElementsByTagName("html")(0).GetAttribute("scrollHeight"))
						MessageBox.Show("Webページのbody部分のサイズ " & webBrowser1.Document.Body.ScrollRectangle.ToString())
						MessageBox.Show("スクロール量 X:" & webBrowser1.Document.GetElementsByTagName("html")(0).ScrollLeft & " Y:" & webBrowser1.Document.GetElementsByTagName("html")(0).ScrollTop)
						MessageBox.Show("スクロール量 X:" & DirectCast(DirectCast(webBrowser1.Document.DomDocument, MSHTML.IHTMLDocument3).documentElement, MSHTML.IHTMLElement2).scrollLeft & " Y:" & DirectCast(DirectCast(webBrowser1.Document.DomDocument, MSHTML.IHTMLDocument3).documentElement, MSHTML.IHTMLElement2).scrollTop)
				
						'画面スクロール
						webBrowser1.Document.Window.ScrollTo(100, 100) '座標100,100にスクロールさせる
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_scroll.html)を使っています

						//WebBorwserコントロールの画面情報を表示する
						MessageBox.Show("WebBrowserコントロールのサイズ" + webBrowser1.ClientSize.ToString());
			
						//Web画面の情報を取得する
						MessageBox.Show("Webページのhtml部分のサイズ 幅:" + webBrowser1.Document.GetElementsByTagName("html")[0].GetAttribute("scrollWidth") + " 高さ:" + webBrowser1.Document.GetElementsByTagName("html")[0].GetAttribute("scrollHeight"));
						MessageBox.Show("Webページのbody部分のサイズ " + webBrowser1.Document.Body.ScrollRectangle.ToString());
						MessageBox.Show("スクロール量 X:" + webBrowser1.Document.GetElementsByTagName("html")[0].ScrollLeft + " Y:" + webBrowser1.Document.GetElementsByTagName("html")[0].ScrollTop);
						MessageBox.Show("スクロール量 X:" + ((webBrowser1.Document.DomDocument as MSHTML.IHTMLDocument3).documentElement as MSHTML.IHTMLElement2).scrollLeft + " Y:" + ((webBrowser1.Document.DomDocument as MSHTML.IHTMLDocument3).documentElement as MSHTML.IHTMLElement2).scrollTop);
			
						//画面スクロール
						webBrowser1.Document.Window.ScrollTo(100, 100); //座標100,100にスクロールさせる
					

					

参考

WebView2コントロール使用時

						'下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_scroll.html)を使っています

						Dim js As New System.Text.StringBuilder()
				
						'Web画面の情報を取得する
						js.AppendLine("alert('Webページのhtml部分のサイズ 幅:' + document.documentElement.scrollWidth + ' 高さ:' + document.documentElement.scrollHeight);")
						js.AppendLine("alert('Webページのbody部分のサイズ 幅:' + document.body.scrollWidth + ' 高さ:' + document.body.scrollHeight);")
						js.AppendLine("alert('Webページのbody部分のサイズ 幅:' + document.body.clientWidth + ' 高さ:' + document.body.clientHeight);")
						js.AppendLine("alert('Webページのbody部分のサイズ 幅:' + document.body.offsetWidth + ' 高さ:' + document.body.offsetHeight);")
						js.AppendLine("alert('表示している画面のhtml部分のサイズ 幅:' + document.documentElement.clientWidth + ' 高さ:' + document.documentElement.clientHeight);")
						js.AppendLine("alert('表示している画面のhtml部分のサイズ 幅:' + document.documentElement.offsetWidth + ' 高さ:' + document.documentElement.offsetHeight);")  'offsetHeightはWebページの高さが取得される
						js.AppendLine("alert('表示している画面のスクロールバーを含めたのサイズ 幅:' + window.innerWidth + ' 高さ:' + window.innerHeight);")
						js.AppendLine("alert('表示している画面のスクロールバーを含めたのサイズ 幅:' + window.outerWidth + ' 高さ:' + window.outerHeight);")
						js.AppendLine("alert('スクロール量 X:' + document.documentElement.scrollLeft + ' Y:' + document.documentElement.scrollTop);")
				
						'画面スクロール
						js.AppendLine("window.scrollTo(100, 100);")    '座標100,100にスクロールさせる
						js.AppendLine("window.scrollBy(10, 10);")      '指定した座標分だけスクロールさせる
				
						Await webView2.ExecuteScriptAsync(js.ToString())
					
						//下記コードの動作確認はテストページ(https://web.biz-prog.net/test/testpage_scroll.html)を使っています

						var js = new System.Text.StringBuilder();
			
						//Web画面の情報を取得する
						js.AppendLine("alert('Webページのhtml部分のサイズ 幅:' + document.documentElement.scrollWidth + ' 高さ:' + document.documentElement.scrollHeight);");
						js.AppendLine("alert('Webページのbody部分のサイズ 幅:' + document.body.scrollWidth + ' 高さ:' + document.body.scrollHeight);");
						js.AppendLine("alert('Webページのbody部分のサイズ 幅:' + document.body.clientWidth + ' 高さ:' + document.body.clientHeight);");
						js.AppendLine("alert('Webページのbody部分のサイズ 幅:' + document.body.offsetWidth + ' 高さ:' + document.body.offsetHeight);");
						js.AppendLine("alert('表示している画面のhtml部分のサイズ 幅:' + document.documentElement.clientWidth + ' 高さ:' + document.documentElement.clientHeight);");
						js.AppendLine("alert('表示している画面のhtml部分のサイズ 幅:' + document.documentElement.offsetWidth + ' 高さ:' + document.documentElement.offsetHeight);");  //offsetHeightはWebページの高さが取得される
						js.AppendLine("alert('表示している画面のスクロールバーを含めたのサイズ 幅:' + window.innerWidth + ' 高さ:' + window.innerHeight);");
						js.AppendLine("alert('表示している画面のスクロールバーを含めたのサイズ 幅:' + window.outerWidth + ' 高さ:' + window.outerHeight);");
						js.AppendLine("alert('スクロール量 X:' + document.documentElement.scrollLeft + ' Y:' + document.documentElement.scrollTop);");
			
						//画面スクロール
						js.AppendLine("window.scrollTo(100, 100);");    //座標100,100にスクロールさせる
						js.AppendLine("window.scrollBy(10, 10);");      //指定した座標分だけスクロールさせる
			
						await webView2.ExecuteScriptAsync(js.ToString());
					

参考

window.scrollTo