首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi TWebBrowser 與 MSHTML 深度解析 (4):Location、History、Screen、Navigator 對象詳解

     編輯:Delphi

概述

在 MSHTML DOM 模型中,window 對象下掛載著四個核心子對象:location(URL 定位)、history(歷史記錄)、screen(螢幕資訊)、navigator(瀏覽器環境)。掌握它們的屬性與方法,能實現頁面導航、歷史控制、環境檢測等關鍵功能。

Location 對象:URL 解析與導航核心

location 對象提供完整的 URL 讀寫與拆解能力,是頁面跳轉與參數傳遞的基礎。

導航方法

  • reload():重新載入當前文檔(可選參數強制從伺服器獲取)。
  • replace(url):用新文檔替換當前歷史記錄條目,不產生新歷史。
  • assign(url):載入新文檔,會在歷史中創建新條目。

URL 組件屬性(可讀可寫)

屬性說明範例
href完整 URLhttps://example.com/path?query=1#hash
protocol協議(含冒號)https:
host主機名 + 端口example.com:8080
hostname主機名example.com
port端口號8080
pathname路徑部分/path/page.html
search查詢字串(含 ?)?query=1&name=test
hash錨點(含 #)#section1

注意:原文中 host 描述有誤,實際 host 為「主機名:端口」,錨點屬於 hash。

History 對象:會話歷史控制

受同源策略限制,僅能操作當前標籤頁的會話歷史,無法讀取具體 URL。

方法

  • back():後退一頁
  • forward():前進一頁
  • go(delta):相對跳轉,如 go(-2) 後退兩頁,go(1) 等同 forward()

屬性

  • length:歷史列表條目總數(含當前頁)

Screen 對象:顯示環境資訊

提供用戶螢幕硬體特性,常用於響應式佈局或圖表自適應。

  • width / height:螢幕解析度寬高(像素)
  • availWidth / availHeight:可用工作區尺寸(扣除任務列)
  • colorDepth / bufferDepth:色彩位深
  • updateInterval:刷新率(較少用)
  • fontSmoothingEnabled:字體平滑是否啟用

Navigator 對象:瀏覽器與環境指紋

核心屬性用於特性檢測、UA 解析、平台判斷:

部分屬性(connectionSpeed、opsProfile、userProfile)屬舊版 IE 專有,現代開發建議避免依賴。

Delphi 實戰調用範例

uses MSHTML;
var
  Loc: IHTMLLocation;
  Hist: IHTMLHistory;
  Scr: IHTMLScreen;
  Nav: IHTMLNavigator;
begin
  Loc := (WebBrowser1.Document as IHTMLDocument2).location;
  Hist := (WebBrowser1.Document as IHTMLDocument2).parentWindow.history;
  Scr := (WebBrowser1.Document as IHTMLDocument2).parentWindow.screen;
  Nav := (WebBrowser1.Document as IHTMLDocument2).parentWindow.navigator;

  // 導航範例
  Loc.href := 'https://example.com?param=1';
  // 歷史後退
  Hist.back;
  // 獲取螢幕可用寬度
  ShowMessage(IntToStr(Scr.availWidth));
  // UA 判斷
  if Pos('MSIE', Nav.userAgent) > 0 then ...;
end;

最佳實踐建議

  1. URL 參數操作優先用 URLSearchParams(現代 JS)或 Delphi 端解析,避免手工拼接錯誤。
  2. 歷史操作需在 DocumentComplete 後執行,確保歷史堆疊就緒。
  3. 螢幕尺寸讀取建議在視窗顯示後獲取,避免 DPI 縮放導致偏差。
  4. UA 字串易偽造,關鍵業務邏輯勿單憑 navigator 判斷,採用特性檢測為主。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
屬性用途
userAgent完整 UA 字串,含瀏覽器、引擎、OS 資訊
appName / appCodeName / appVersion瀏覽器名稱、代碼名、版本
platform作業系統平台(如 Win32、MacIntel)
cookieEnabledCookie 是否啟用
javaEnabled()Java Applet 支援(已棄用)
onLine是否聯網(HTML5 標準)
language / userLanguage / systemLanguage / browserLanguage多維語言設置
cpuClassCPU 等級(如 x86)
plugins / mimeTypes已安裝外掛與 MIME 類型陣列