WebBrowser控件与JavaScript错误当我使用浏览器(ie9)访问页面时,浏览器渲染正常。使用WebBrowser控件时出现JavaScript错误。我知道我可以抑制脚本错误,但我希望它们能够正确运行,因为它们会影响页面的呈现和功能。我怎么解决这个问题?能否直接在WindowsForms中集成IE9,使用类似于WebBrowser控件的方法(navigate、getid、callclick)?谢谢。我所做的是将一个对象分配给webbrowser.ObjectForScripting,然后注入一个javascript函数,该函数将windown.onerror分配给调用主机应用程序中的外部脚本的包装器。比如:window.onerror=function(message,url,lineNumber){window.external.errorHandler(message,url,lineNumber);}参考:http://notions.okuda.ca/2009/06/11/calling-javascript-in-a-webbrowser-control-from-c/您可以使用以下代码行来抑制这些类型的错误:webBrowser1.ScriptErrorsSuppressed=true;它可以防止出现JavaScript错误。如果安装了IE9,WebBrowser仍将使用IE7模式,除非您使用注册表设置覆盖此行为-如此StackOverflow答案中所述。这是您在WebBrowser中遇到的JavaScript错误的最可能原因(因为您在IE9中没有看到相同的错误)。您可以使用以下c#代码进行注册表设置(如果检测到Windows8,则设置IE10模式)并更改app-name.exe以匹配您自己的应用程序。您应该为您没有足够权限的情况添加错误处理程序(需要管理员权限才能写入此注册表项)。stringinstallkey=@"SOFTWAREMicrosoftInternetExplorerMainFeatureControlFEATURE_BROWSER_EMULATION";stringentryLabel="app-name.exe";System.OperatingSystemosInfo=System.Environment.OSVersion;字符串版本=osInfo.Version.Major.ToString()+'.'+操作系统信息。Version.Minor.ToString();uinteditFlag=(uint)((version=="6.2")?0x2710:0x2328);//6.2=Windows8,因此IE10RegistryKeyexistingSubKey=Registry.LocalMachine.OpenSubKey(installkey,false);//只读键if(existingSubKey.GetValue(entryLabel)==null){existingSubKey=Registry.LocalMachine.OpenSubKey(installkey,true);//可写键existingSubKey.SetValue(entryLabel,unchecked((int)editFlag),RegistryValueKind.DWord);所以我知道这篇文章已经过时了,但这对我来说是最近的一个问题,我不得不跳出框框进行一些认真的挖掘和思考。基本上就像这里的大多数回复一样——您不能更改网络浏览器控件以使用最新的IE引擎。我默认使用IE7,我看到一些回复基本上是更改/添加一些东西到注册表,在注册表中总是不舒服,解决这个问题的更简洁的方法是将代码附加到您的网站,强制它像任何计算机上最新的IE引擎的魅力。如果您有权访问要浏览的页面的web.config文件,只需附加:,您的站点将强制webbrowser控件在您的计算机上运行最新的IE引擎。其他选项可以在这里找到:https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css—disabling-compatibility-mode站点/应用程序的pages/web.config-这是我的情况。WebBrowser控件使用IE7。因此,如果出现问题,那么您的脚本将无法在IE7上运行,您必须修复它。您不能集成IE9,因为这取决于它是否安装在计算机上,并不是每个人都安装了IE9。作为对可能遇到此问题的其他人的帮助,我尝试了所有这些方法,但对我没有任何帮助。这很有用。我不确定到底是什么导致了这个错误,但显然当你在VS中按“F5”来调试你的应用程序时,它运行YourProject.vshost.exe作为进程名称。如果我从命令行运行相同的应用程序,它将显示为YourProject.exe,并且javascript错误消失。我认为IE看??到该应用程序通过VSHOST运行签证,并认为这是可疑的并禁用正确加载的javascript。所以...进入您的可执行文件的项目设置。选择“调试”选项。选择“启动外部程序”。浏览并选择调试YourProgram.exe(不是YourProgram.vshost.exe)。保存,重新编译,然后按F5。现在一切都应该像往常一样工作,VisualStudio甚至会自动为您处理这个过程。请享用!Grego以上就是C#学习教程的全部内容:WebBrowser控件和JavaScript错误分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
