当我关闭使用webbrowser的应用程序时会发生什么。以下网址使用flash播放器。
一切正常。应用关闭时显示此错误。我怎么忽略它?
答案 0 :(得分:2)
您可以通过将WebBrowser控件的ScriptErrorsSuppressed属性设置为true来禁用javascript错误。但有时它可能不起作用。如果它不起作用,请检查http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/46a32b08-3834-4a13-8170-e0eba2498284和http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/07df5263-613c-4780-89a2-67ebf2a1e670
答案 1 :(得分:2)
我知道为时已晚,但我觉得我对这个问题有一个明智的答案。
使用它,它可以在飞行中为我工作。 :)
webBrowser.ScriptErrorsSuppressed = true;
如果它不起作用,我们可以使用不同的方法,例如显示确认框(例如:这个窗口想要关闭你想继续是/否)
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private void TimerPopUp_Tick(object sender, EventArgs e)
{
IntPtr hWnd1 = FindWindowByCaption(IntPtr.Zero, "Web Browser");
if (hWnd1 != IntPtr.Zero && SetForegroundWindow(hWnd1))
{
SendKeys.Send("{Enter}");
}
}
如果有任何错误,请参阅此link。
答案 2 :(得分:0)
首先,您需要知道webbrowser控件使用IE7作为其基础(即旧版本的Internet Explorer),因此您现在运行的脚本与现代浏览器兼容,从而与错误兼容。 首先,如果你把:
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
在你的页面部分内,它将使用机器上安装的IE版本而不是默认的IE 7进行渲染
希望这有帮助!
答案 3 :(得分:0)
您应该使WebBrowser Control COM可见并为其提供适当的权限:
engine.eval("var webPage = require('webpage');
^
+ "var page = webPage.create();"
或:
#region Using Statements:
using System;
using System.Windows.Forms;
using System.Security.Permissions;
#endregion
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// WebBrowser Configuration:
webBrowser1.ObjectForScripting = this;
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.google.com/");
}
}
注意:这可能无法在调试模式下正常运行。
此外,如果您需要为本地应用程序兼容性设置注册表项,它也不会在调试模式下运行。
#region Using Statements:
using System;
using System.Windows.Forms;
using System.Security.Permissions;
#endregion
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// WebBrowser Configuration:
webBrowser1.ObjectForScripting = new ObjectForScripting();
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.google.com/");
}
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class ObjectForScripting
{
// User Code to handle events..
}
}
答案 4 :(得分:0)
在Visual Studio 2015
中,有一个选项可以启用或禁用弹出窗口。
在web browser properties
→Script Errors Suppressed
中,然后将其设置为True
以禁用弹出窗口。