我已在WPF中添加对webbrowser的引用……但出现上面的问题……求各位大神指导……
解决方案 »
- 如何在一个类的方法里面控制窗体
- .NET 从随机的20个数字中选取5个不同的数字。
- .net (c#) 能否开发手机操作系统和应用程序?
- 请问怎么在程序运行过程中,执行临时读取的一个文本文件中的sql语句?
- 如何将WinForm程序在Alt+Tab切换列表中隐藏
- 用资源文件重绘窗体的问题,总提示如下错误,代码我贴出来,请大家帮忙!!!1
- 这里有大量.NET资料下载!!!
- GridView 中一个列设为只读,但编辑完成后只读列为空, 不再显示任何东西。急求!!!!!!
- js或jquery刷新用户自定义控件
- C# 中有没有 DecimalFormat 类似的对象?
- DXperience Universal 11.1.4 简体繁体中文汉化(比官方汉化更完全)
- 求救!!Socket只能接受一次值、。
public partial class WebBrowserHelper {
private WebBrowser _webBrowser;
private object _cookie; public event CancelEventHandler NewWindow; public WebBrowserHelper(WebBrowser webBrowser) {
if(webBrowser == null)
throw new ArgumentNullException("webBrowser");
_webBrowser = webBrowser;
_webBrowser.Dispatcher.BeginInvoke(new Action(Attach), DispatcherPriority.Loaded);
} public void Disconnect() {
if(_cookie != null) {
_cookie.ReflectInvokeMethod("Disconnect", new Type[] { }, null);
_cookie = null;
}
} private void Attach() {
var axIWebBrowser2 = _webBrowser.ReflectGetProperty("AxIWebBrowser2");
var webBrowserEvent = new WebBrowserEvent(this);
var cookieType = typeof(WebBrowser).Assembly.GetType("MS.Internal.Controls.ConnectionPointCookie");
_cookie = Activator.CreateInstance(
cookieType,
ReflectionService.BindingFlags,
null,
new[] { axIWebBrowser2, webBrowserEvent, typeof(DWebBrowserEvents2) },
CultureInfo.CurrentUICulture);
} private void OnNewWindow(ref bool cancel) {
var eventArgs = new CancelEventArgs(cancel);
if(NewWindow != null) {
NewWindow(_webBrowser, eventArgs);
cancel = eventArgs.Cancel;
}
}
}public partial class WebBrowserHelper {
private class WebBrowserEvent : StandardOleMarshalObject, DWebBrowserEvents2 {
private WebBrowserHelper _helperInstance = null; public WebBrowserEvent(WebBrowserHelper helperInstance) {
_helperInstance = helperInstance;
} #region DWebBrowserEvents2 Members public void StatusTextChange(string text) { } public void ProgressChange(int progress, int progressMax) { } public void CommandStateChange(long command, bool enable) { } public void DownloadBegin() { } public void DownloadComplete() { } public void TitleChange(string text) { } public void PropertyChange(string szProperty) { } public void BeforeNavigate2(object pDisp, ref object URL, ref object flags, ref object targetFrameName, ref object postData, ref object headers, ref bool cancel) { } public void NewWindow2(ref object pDisp, ref bool cancel) {
_helperInstance.OnNewWindow(ref cancel);
} public void NavigateComplete2(object pDisp, ref object URL) { } public void DocumentComplete(object pDisp, ref object URL) { } public void OnQuit() { } public void OnVisible(bool visible) { } public void OnToolBar(bool toolBar) { } public void OnMenuBar(bool menuBar) { } public void OnStatusBar(bool statusBar) { } public void OnFullScreen(bool fullScreen) { } public void OnTheaterMode(bool theaterMode) { } public void WindowSetResizable(bool resizable) { } public void WindowSetLeft(int left) { } public void WindowSetTop(int top) { } public void WindowSetWidth(int width) { } public void WindowSetHeight(int height) { } public void WindowClosing(bool isChildWindow, ref bool cancel) { } public void ClientToHostWindow(ref long cx, ref long cy) { } public void SetSecureLockIcon(int secureLockIcon) { } public void FileDownload(ref bool cancel) { } public void NavigateError(object pDisp, ref object URL, ref object frame, ref object statusCode, ref bool cancel) { } public void PrintTemplateInstantiation(object pDisp) { } public void PrintTemplateTeardown(object pDisp) { } public void UpdatePageStatus(object pDisp, ref object nPage, ref object fDone) { } public void PrivacyImpactedStateChange(bool bImpacted) { } #endregion
}
}
当前页面的脚本发生错误
行:168
Char:6
错误:无法设置属性“innerHTML”的值:对象为null或未定义
代码:0
URL:http://www.southcn.com/public/ria/moodpoll/ScMooPoll.js
是否要在此页面上继续运行脚本?
请问是怎么一回事呢?
public static class WebBrowserExtensions {
public static void SuppressScriptErrors(this WebBrowser webBrowser, bool hide) {
FieldInfo fiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
if(fiComWebBrowser == null) return;
object objComWebBrowser = fiComWebBrowser.GetValue(webBrowser);
if(objComWebBrowser == null) return;
objComWebBrowser.GetType().InvokeMember("Silent", BindingFlags.SetProperty, null, objComWebBrowser, new object[] { hide });
}
}
我添加newwindow响应事件后,可以了……但是有些页面打开后,会弹出一个对话框:上面写着:
当前页面的脚本发生错误
行:168
Char:6
错误:无法设置属性“innerHTML”的值:对象为null或未定义
代码:0
URL:http://www.southcn.com/public/ria/moodpoll/ScMooPoll.js
是否要在此页面上继续运行脚本?
请问是怎么一回事呢?
报什么错?using System.Reflection;
using System.Windows.Controls;即可,不用增加额外的Reference
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:x86 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationCore.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIntegration.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\x86\Debug\WpfApplication7.exe /resource:obj\x86\Debug\WpfApplication7.g.resources /resource:obj\x86\Debug\WpfApplication7.Properties.Resources.resources /target:winexe App.xaml.cs MainWindow.xaml.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs "D:\C++2010 Project\Projects测试\WpfApplication7\WpfApplication7\obj\x86\Debug\MainWindow.g.cs" "D:\C++2010 Project\Projects测试\WpfApplication7\WpfApplication7\obj\x86\Debug\App.g.cs"
CoreCompile:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:x86 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationCore.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIntegration.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\x86\Debug\WpfApplication7.exe /resource:obj\x86\Debug\WpfApplication7.g.resources /resource:obj\x86\Debug\WpfApplication7.Properties.Resources.resources /target:winexe App.xaml.cs MainWindow.xaml.cs Properties\AssemblyInfo.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs "D:\C++2010 Project\Projects测试\WpfApplication7\WpfApplication7\obj\x86\Debug\MainWindow.g.cs" "D:\C++2010 Project\Projects测试\WpfApplication7\WpfApplication7\obj\x86\Debug\App.g.cs"