微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以编程方式检测是否在Windows桌面应用程序中启用/禁用了JavaScript? WebBrowser控件

我有一个应用程序将HTML写入.NET WinForms应用程序中的Webbrowser控件。

我想以某种方式编程检测,如果Internet设置有JavaScript(或活动脚本相反)禁用。

我猜你需要使用像WMI这样的东西来查询IE安全设置。

编辑#1:这是很重要的,我知道如果在显示HTML之前启用JavaScript,所以解决方法修改DOM显示警告或使用标记不适用于我的具体情况。 在我的情况下,如果javascript不可用,我会在本地RichTextBox显示内容,而我也想报告JS是否启用回服务器应用程序,所以我可以告诉pipe理员谁发送警报5%或75%的用户有JS启用与否。

重命名和复制程序集是否安全?

从Win32_PrintJob获取总页数

从.NET注册免费激活本机COM(activex)组件

为什么monodevelop需要.NET 3.5框架在Windows上运行?

我如何杀死我的移动应用程序?

帮助修复C#中的错误“引用或失败参数必须是可赋值的”

正确的方法提前中止BeginRead和BeginWrite?

Wix:将自定义操作中的文件复制到Programm目录(Windows 7)

Linux世界中是否有与.Net FileSystemWatcher相当的function?

Windows,C#:从活动和保存的日志中读取事件日志条目

感谢@ Kickaha的建议。 这是一个简单的方法,它检查注册表,看它是否被设置。 可能有些情况下,这可能会抛出异常,所以一定要处理它们。

const string DWORD_FOR_ACTIVE_SCRIPTING = "1400"; const string VALUE_FOR_disABLED = "3"; const string VALUE_FOR_ENABLED = "0"; public static bool IsJavascriptEnabled( ) { bool retVal = true; //get the registry key for Zone 3(Internet Zone) Microsoft.Win32.RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SoftwareMicrosoftwindowsCurrentVersionInternet SettingsZones3",true); if (key != null) { Object value = key.GetValue(DWORD_FOR_ACTIVE_SCRIPTING,VALUE_FOR_ENABLED); if( value.ToString().Equals(VALUE_FOR_disABLED) ) { retVal = false; } } return retVal; }

注意:为了保持代码示例的简短性(并且因为我只关心Internet区域),此方法仅检查Internet区域。 您可以在OpenSubKey行末尾修改3以更改区域。

如果你弹出的弹出式菜单有问题,我已经为你提供了一个解决方案,如果你想在客户端机器上禁用/启用javascript(或者只是读/查询是否启用/禁用)对于你来说,在这里我们去:

您要禁用哪个弹出消息? 如果是警告消息,试试这个,明显解决窗口或框架对象到您的特定需求,我只是假设顶级文档,但如果您需要一个iframe,您可以访问它使用window.frames(0)。 对于第一帧等…(重新JavaScript的一部分)…这里是一些代码,假设WB是您的浏览器控制…

WB.Document.parentwindow.execScript“window.alert = function(){};”,“JScript”

你必须在整个页面加载完成后才能运行上面的代码,我明白这是非常困难的事情(而且还没有发布完整的版本),但是我一直在做这个(完整的证明)现在,如果你阅读了我之前的一些标签为“webbrowser”和“webbrowser-control”的答案,你可以收集一些关于如何做到这一点的提示,但是如果你想取消.confirm JavaScript消息,只需用window.confirm替换window.alert(当然,使用正确的对象限定窗口对象,以达到正在使用的文档层次结构)。 您还可以使用上述技术和新的IE9 .prompt方法禁用.print方法

如果您想完全禁用JavaScript,您可以使用注册表执行此操作,并且必须在Web浏览器控件加载到内存之前更改注册表,并且每次更改它(开启和关闭)时,都必须重新加载Web浏览器控件并进入内存(或重新启动您的应用程序)。

注册表项是HKEY_CURRENT_USERSoftwareMicrosoftwindowsCurrentVersionInternet SettingsZones – 键名是1400 ,禁用它的值是3,并启用它为0。

当然,因为区域键下有5个区域,所以您需要将其更改为活动区域或确保所有区域。 但是,如果你想要做的只是弹出js对话框弹出消息,你真的不需要这样做。

让我知道你如何去,如果我可以进一步帮助。

这是一个建议 – 认情况下将警告编码到您的网页。 创建一个运行在页面加载的JavaScript,删除该元素。 当JavaScript不允许运行时,警告将在那里。

由于我编写了客户端HTML JavaScript与DOM进行交互,所以我可能会过时一些。 即你将需要修复细节,但我希望我能得到大致的想法。

<script> document.getElemntByID("noJavascriptWarning").innerHTML=""; </script>

并在你的HTML主体

<DIV id="noJavascriptWarning" name="noJavaScriptWarning">Please enable Javascript</DIV>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐