如何在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
相关产品推荐
相关产品推荐

