如何将本地脚本文件添加到WebBrowser控件的HTML中?
这似乎很愚蠢。我尝试了一堆不同的方法,但它不起作用。我有一个带有WebBrowser控件的WinForms应用程序。如果我用我的桌面上的原始html文件尝试使用相同的src字符串,我放在一起的src工作正常。但将相同的东西插入WebBrowser控件将不起作用。如何将本地脚本文件添加到WebBrowser控件的HTML中?
这里是我的代码:
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);
}
web浏览器并没有拿到剧本。但是,如果我将“mySource”更改为外部资源(通过http://),它可以正常工作!
帮助!
我想出了您的文章,而玩的东西左右,我下面的工作:
HtmlElementCollection head = webBrowser1.Document.GetElementsByTagName("head");
if (head != null)
{
HtmlElement elm = webBrowser1.Document.CreateElement("script");
elm.SetAttribute("type", "text/javascript");
elm.InnerText = System.IO.File.ReadAllText(Environment.CurrentDirectory + @"\helperscripts.js");
((HtmlElement)head[0]).AppendChild(elm);
}
,所以helperscript.js的所有方法可以使用
webBrowser1.Document.InvokeScript("methodname");
,这里作为脚本调用的参考:How to inject Javascript in WebBrowser control?
问候
尝试将URL添加到file://
。
我真的这样做了,并试图找到我能找到的所有其他已知术语。我使用Absolutes,Relatives,使用URI来代替,等等。不行。 – IAmAN00B 2010-10-27 13:17:18
这是因为安全原因。你需要一个网络服务器来做到这一点,否则你可以访问系统上的任何文件,这将是一个很大的安全漏洞。
在研究与开发模式下,可以e.g在Chrome设置:
chrome.exe --allow-file-access-from-files
而且你将能够运行代码。
There is a long story有关来自MS的“安全修复程序”的变通方法。新行为从IE7开始实施。看看“基地”标签和IE Feature controls。
我做了以下内容:
//TODO: if not mono
var executableFilename = Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().Location);
var keys = new[] { executableFilename, [vsname]+".vshost.exe" }; //check!
Action<string, object, string> SetRegistryKeyOrFail =
(key, val, regStr) =>
{
var reg =
Registry.CurrentUser.CreateSubKey(regStr);
if (reg == null) throw new Exception("Failed registry: " + regStr);
reg.SetValue(key, val);
};
foreach (var key in keys)
{
SetRegistryKeyOrFail(key, 1, @"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BLOCK_LMZ_IMG");
SetRegistryKeyOrFail(key, 0, @"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BLOCK_LMZ_SCRIPT");
}
出现此错误:{“属性在此类型的HtmlElement上不受支持。”} – MonsterMMORPG 2013-07-21 12:45:19
可能只适用于IE – womd 2013-11-14 14:17:01
它可以工作,但是当尝试将大脚本设置为'elm.InnerText'时,进程停止响应一段时间。 – Gildor 2015-06-04 20:49:26