.net webBrowser 控件,如何在网页加载之前加入一段 script 代码?
默认HTML 文档是这样:
<html>
<body>
</body>
</html>
想在文档最上面加入一段代码,效果如:
<script src="xxx.js"></script>
<html>
<body>
</body>
</html>
--问题没描述清楚,追加一下
在html文档加载之前加入一段 script 代码
我自己想到了,可以用webclient 把数据下载下来,然后设置webBrowser的DocumentText 即可
C# 代码反复试了一些方法不是很有效,甚至不执行
1、设置webBrowser.DocumentText,不管用
private void FormMain_Load(object sender, EventArgs e)
{
AddressInfo info = new CodeParser().Parse(this.code);
webBrowser.ObjectForScripting = this;
//webBrowser.ScriptErrorsSuppressed = true;
string src = "http://xxxx.com/xx.js?time=" + DateTime.Now.ToString("yyyyMMddhhmm");
webBrowser.DocumentText = @"<script src=""" + src + @""" charset=""utf-8"" type=""text/javascript""></script>";
if (info != null)
{
if (!string.IsNullOrEmpty(info.UrlString))
{
webBrowser.Navigate(info.UrlString);
}
}
}
2、在 webBrowser_DocumentCompleted 时设置 webBrowser.DocumentText,也不管用
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowserReadyState state = ((WebBrowser)sender).ReadyState;
/*
switch (state)
{
case WebBrowserReadyState.Complete:
MessageBox.Show("Complete");
break;
case WebBrowserReadyState.Interactive:
MessageBox.Show("Interactive");
break;
case WebBrowserReadyState.Loaded:
MessageBox.Show("Loaded");
break;
case WebBrowserReadyState.Loading:
MessageBox.Show("Loading");
break;
case WebBrowserReadyState.Uninitialized:
MessageBox.Show("Uninitialized");
break;
default:
MessageBox.Show("default");
break;
}*/
if (state == WebBrowserReadyState.Loading)
{
MessageBox.Show("fuck");
string src = "http://xxxx.com/xx.js?time=" + DateTime.Now.ToString("yyyyMMddhhmm");
webBrowser.DocumentText = @"<script src=""" + src + @""" charset=""utf-8"" type=""text/javascript""></script>";
/*
HtmlElement script = webBrowser.Document.CreateElement("script");
script.SetAttribute("src", src);
script.SetAttribute("charset", "utf-8");
webBrowser.Document.Body.AppendChild(script);
*/
}
}
求解啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在html文档加载之前加入一段 script 代码
我自己想到了,可以用webclient 把数据下载下来,然后设置webBrowser的DocumentText 即可
可以是可以的。
只是我想跟你说,你得学会使用搜索引擎。虽然有社区但是这种问题,有时候得靠自己。
http://stackoverflow.com/questions/153748/how-to-inject-javascript-in-webbrowser-control
System.Windows.Forms.WebBrowser
事实上是SHDocVw.WebBrowser
的封装,有很多SHDocVw.WebBrowser
有,但是System.Windows.Forms.WebBrowser
未实现的功能添加引用库
SHDocVw
, 然后通过(SHDocVw.WebBrowser)FormsWbObj.ActiveXInstance
得到SHDocVw.WebBrowser
对象;SHDocVw.WebBrowser.BeforeScriptExecute
这个事件发生在浏览器中页面加载完毕后和页面脚本执行之前,且每个页面子框架页面加载后都会触发一次然后...我想你应该知道怎么做了吧?
另外代码联想可能打不出对应的委托名token,在这里发一下
SHDocVw.DWebBrowserEvents2_BeforeScriptExecuteEventHandler