我今天刚开始使用Visual Studio 2010 C#IDE.
我正在尝试向WebBrowser组件注入javascript并遵循stackoverflow的答案:
HtmlElement txtBox = webBrowser1.Document.GetElementById("UserEmailShortcut");
//js
HtmlElement scriptOne = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptOne.DomElement;
element.text = "function sayHello() { alert('hello') }";
txtBox.AppendChild(scriptOne);
webBrowser1.Document.InvokeScript("sayHello");
Run Code Online (Sandbox Code Playgroud)
现在IHTMLScriptElement下面有红色波浪线说:
Error 1 The type or namespace name 'IHTMLScriptElement'
could not be found (are you missing a using directive or an assembly reference?)
C:\Users\m-tak\documents\visual studio
2010\Projects\winformWithWebBrowserTest\winformWithWebBrowserTest\Form1.cs
25 13 winformWithWebBrowserTest
Run Code Online (Sandbox Code Playgroud)
我看过文档 http://msdn.microsoft.com/en-us/library/aa768904(v=VS.85).aspx
但我无法理解为什么.这不是已经包括在内,只需要包括像" using IHTMLScriptElement"(这不起作用..)
我有一个.NET 2.0 WebBrowser控件,用于导航一些没有用户交互的页面(不要问......长篇故事).由于此应用程序的用户性质较少,我已将WebBrowser控件的ScriptErrorsSuppressed属性设置为true,VS 2005状态中包含的文档将"隐藏其源自底层ActiveX控件的所有对话框,不只是脚本错误." 但是,MSDN文章没有提到这一点.我已经设法取消了NewWindow事件,这会阻止弹出窗口,因此需要处理.
任何人都有使用其中一个并成功阻止所有对话框,脚本错误等的经验?
编辑
这不是IE的独立实例,而是生成在Windows窗体应用程序上的WebBrowser控件的实例.任何人都有使用此控件或底层AxSHDocVW的经验吗?
再次编辑
对不起,我忘了提这个...我试图阻止一个JavaScript警报(),只需一个OK按钮.也许我可以转换成IHTMLDocument2对象并以这种方式访问脚本,我已经使用过MSHTML了,有人都知道吗?
我从.Net阅读了WebBrowser控件 - 如何注入Javascript,是否可以从c#winforms和其他许多人调用Javascript方法.这些示例是返回函数值或警报窗口(同步调用).我必须从事件处理程序(asyn调用)获取结果:
<script type="text/javascript">
window.onload = function() {
var o = new M.Build(document.getElementById("ZID"));
M.Events.observe(o, o.Events.Success, function() {
// I have to get some value!!
});
M.Events.observe(o, o.Events.Fault, function() {
// I have to get some value!!
});
}
</script>
Run Code Online (Sandbox Code Playgroud) 这看起来真的很蠢.我尝试了一些不同的方法,但它只是不起作用.我有一个带WebBrowser控件的WinForms应用程序.如果我使用相同的src字符串在我的桌面上尝试使用原始html文件,我放在一起的src工作正常.但是将相同的东西插入WebBrowser控件将无法正常工作.
这是我的代码:
HtmlElementCollection head = this.wbPreview.Document.GetElementsByTagName( "head" );
if (head != null)
{
HtmlElement elm = this.webBrowserControl.Document.CreateElement("script");
string mySource = Environment.CurrentDirectory + @"\MyScriptFile.js";
elm.SetAttribute("src", mySource);
elm.SetAttribute("type", "text/javascript");
((HtmlElement)head[0]).AppendChild(elm);
}
Run Code Online (Sandbox Code Playgroud)
WebBrowser无法获取脚本.但是,如果我将"mySource"更改为外部资源(通过http://),它可以正常工作!
救命!
我想将一些样式命令应用于WebBrowser控件中的特定网站.最好的方法是调用javascript(我希望这个样式可以编辑,使用javascript很容易).我知道我可以使用webBrowser1.Navigate("javascript: alert('hi'); void(0);");但是webBrowser接受的最大URL长度是502.如何执行更长的脚本?或者也许有办法将我的CSS附加到网络文档?
PS我无法编辑文档的文本属性,因为它会打破这个网站中的脚本,我需要工作副本,但只是略微调整了一下.
我正在为我的最后一年项目开发一个出租车公司的应用程序.我正在使用Google纬度来跟踪驱动程序的位置.
我可以在C#中成功检索驱动程序(即支持gps的手机)的纬度和经度.
现在我想在一个表格中显示确切的位置,可能有一个针或标记指向检索到的纬度,lon交叉点.
请帮忙.提前致谢.
我有一个运行嵌入式Web浏览器的.NET应用程序(System.Windows.Forms.WebBrowser).我无法弄清楚如何通过按f12(相当于firebug的控制台)访问我通常可以访问的Web控制台.有没有办法实现这个?是否可以将此输出重定向到文件?
我正在使用WebBrowser控件编写一个C#应用程序,我希望我显示的所有内容都来自嵌入式资源 - 而不是静态本地文件,而不是远程文件.
将控件的初始文本设置为嵌入式HTML文件非常适合此帖子启发的代码:
browser.DocumentText=loadResourceText("myapp.index.html");
private string loadResourceText(string name)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream(name);
StreamReader streamReader = new StreamReader(stream);
String myText = streamReader.ReadToEnd();
return myText;
}
Run Code Online (Sandbox Code Playgroud)
就像那样,HTML中引用的文件 - javascript,图像<img src="whatever.png"/>等等都不起作用.我在这里和这里找到了类似的问题,但两者都没有问我到底是什么意思,即在exe中引用嵌入式资源,而不是文件.
我尝试res://...并使用了一个<base href='..."但似乎都没有工作(虽然我可能没有做对).
也许(根据我自己对这个问题的建议),使用一个小的嵌入式C#网络服务器是唯一的方法......但是我会想到有一些技巧可以实现这一目标吗?
谢谢!
我有一个带有Web浏览器控件的表单,它加载一个网页(工作正常,页面加载正常)
现在我的问题是,我想找到一个特定的url-link是在折叠之下还是在折叠之上(我的意思是,用户是否必须向下滚动才能看到这个链接),这个v是否在滚动时是可见的或者我们需要滚动才能看到它..我希望我很清楚
我做了大量的搜索,但看起来没有关于查找html元素位置的信息(在当前视图的上方或下方)
有没有人对此有所了解并能指出我正确的方向吗?(我正在寻找c#解决方案 - WinForms)
更新:非常感谢John Koerner的代码.真的很感激他在解决我的问题上花费的时间和精力.
还有Jonathan和其他所有人......我希望我能将Jonathans的回复标记为答案,但它只允许将一个回复标记为答案.他的评论也很清楚,也很有用.谢谢你们真棒!
我希望在winforms(v2.0)应用程序中将一些带有JavaScript的HTML文件加载到Web浏览器控件中.在执行期间,我将无法访问Internet,因此JavaScript和HTML表单将嵌入到resources.resx文件中.
1)如何从资源中加载HTML文档(类似于file:///操作,但它没有从文件系统加载),
2)如何声明要加载的JavaScript脚本?也就是说,
<script src=resource.jquery.min.js??? ... />
Run Code Online (Sandbox Code Playgroud)
谢谢!
c# ×9
.net ×5
winforms ×5
javascript ×4
html ×2
activex ×1
browser ×1
console ×1
dom-events ×1
google-maps ×1
href ×1
mshtml ×1
resources ×1
webserver ×1