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

C# 程式控制 Firefox 與 IE JavaScript 啟用狀態 (一) - 方案比較與架構

     編輯:關於C語言

需求:以 C# 程式碼切換 IE 與 Firefox 的 JavaScript 啟用/停用狀態。本文比較兩大類方案並確立實作架構。

方案比較

方案原理優點缺點
UI 自動化 (SendKeys/UIAutomation)模擬使用者點選選單 → 選項 → 安全性 → 自訂等級通用、無需研究內部儲存極不穩定、需視窗焦點、版本易失效、慢
修改儲存機制 (登錄/設定檔)直接寫入 IE 登錄機碼 / Firefox prefs.js快速、無 UI 依賴、可批次、可驗證需研究儲存格式、Firefox 需關閉瀏覽器、權限問題

結論:採用方案二 (修改儲存機制),本系列採此路徑。

IE 架構:安全區域與登錄

  • IE 將網站分為 4 大區域:區域網路(1)、信任網站(2)、網際網路(3)、受限網站(4)。
  • 各區域設定儲存於 HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\。
  • Active Scripting 對應值名 1400 (DWORD):0=啟用、1=提示、3=停用。
  • 參考:KB 182569。

Firefox 架構:prefs.js 與設定檔

  • 設定儲存於 %APPDATA%\Mozilla\Firefox\Profiles\.default\prefs.js。
  • JavaScript 控制鍵:user_pref("javascript.enabled", true/false);。
  • 若鍵不存在或值為 true 視為啟用;false 為停用。
  • 修改時 Firefox **必須完全關閉**,否則寫入會被覆蓋。

整體架構設計


public interface IBrowserScriptController
{
    bool IsScriptEnabled();
    void SetScriptEnabled(bool enabled);
}

public class IEScriptController : IBrowserScriptController { ... }
public class FirefoxScriptController : IBrowserScriptController { ... }

// 使用
var controllers = new IBrowserScriptController[]
{
    new IEScriptController(zone: 3),      // 網際網路區域
    new FirefoxScriptController()
};

foreach (var c in controllers)
{
    Console.WriteLine($"{c.GetType().Name}: {c.IsScriptEnabled()}");
    c.SetScriptEnabled(false);
}

下一篇預告

提供 IEScriptController 與 FirefoxScriptController 的完整實作細節,含登錄讀寫、prefs.js 解析、例外處理與單元測試建議。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved