You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi 2006的TWebBrowser组件中启用JavaScript?

Delphi TWebBrowser启用JavaScript的解决方法

你使用Delphi 2006开发的应用中,TWebBrowser访问页面时提示Javascript未启用,调整浏览器仿真注册表项无效,可通过以下几种方式解决:

1. 调整IE安全区域设置

TWebBrowser会继承系统IE的安全区域配置,若目标页面所在区域的脚本被禁用,就会出现该提示:

  • 打开IE浏览器,依次点击「工具」→「Internet选项」→「安全」标签;
  • 选择页面对应的区域(比如目标URL属于Internet区域则选「Internet」);
  • 点击「自定义级别」,在弹出的设置窗口中找到「脚本」分类下的「活动脚本」,设置为「启用」,确定后重启应用。

2. 为应用单独配置区域权限(不影响全局IE设置)

通过注册表将你的应用归类到允许脚本的安全区域,避免修改全局IE设置:

  • 打开注册表编辑器(regedit.exe);
  • 定位到路径:HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ZONE_ELEVATION;
  • 右键新建「DWORD(32位)值」,名称为你的应用程序文件名(比如Project1.exe),数值数据设为1(代表本地Intranet区域,默认允许脚本);
  • 重启应用后测试。

3. 代码中通过接口配置脚本权限

若需要在代码层面控制,可实现IDocHostUIHandler接口自定义WebBrowser的安全设置:

type
  TForm1 = class(TForm, IDocHostUIHandler)
    WebBrowser1: TWebBrowser;
    // ... 其他组件声明
  private
    function GetHostInfo(var pInfo: TDocHostUIInfo): HRESULT; stdcall;
    // 实现接口其他必要方法(未用到的返回E_NOTIMPL)
  public
  end;

implementation

{$R *.dfm}

function TForm1.GetHostInfo(var pInfo: TDocHostUIInfo): HRESULT;
begin
  pInfo.cbSize := SizeOf(TDocHostUIInfo);
  // 启用脚本权限
  pInfo.dwFlags := DOCHOSTUIFLAG_ENABLE_SCRIPT;
  Result := S_OK;
end;

// 示例:空实现其他接口方法
function TForm1.ShowContextMenu(dwID: DWORD; ppt: PPOINT; pcmdtReserved: IUnknown; pdispReserved: IDispatch): HRESULT; stdcall;
begin
  Result := E_NOTIMPL;
end;

// 按需补充IDocHostUIHandler其他接口方法的空实现

额外检查点

  • 确认浏览器仿真注册表项配置正确:HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION下的键名是你的应用完整文件名(如Project1.exe),数值2af9对应IE11边缘模式,配置后需重启应用生效;
  • 代码中WebBrowser1.Silent := True仅用于屏蔽脚本错误弹窗,不会影响JavaScript的启用状态,可保留或移除。

内容的提问来源于stack exchange,提问作者user14668421

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:45:26