本地加载的HTML/Javascript文件在c# WebBrowser对象不能正确加载
本文关键字:加载 WebBrowser 对象 不能 文件 HTML Javascript | 更新日期: 2023-09-27 17:52:59
我正在使用。net Framework 4.0(带WPF),试图在WebBrowser对象(System.Windows.Controls.WebBrowser)中加载本地HTML文件,其中包含本地嵌入的javascript并从远程服务器加载。问题是,javascript (ajax与dojo)没有在WebBrowser对象内执行加载时:
webBrowser.NavigateToString(LoadStringFromFile("map.html"));
但是,当远程加载时,它运行得很好,如下所示:
webBrowser.Navigate("http://www.example.com/map.html");
html文件中Javascript代码的示例摘录:
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script>
<script type="text/javascript">
dojo.require("esri.map");
var map;
var colorRGB = { "white": [255,255,255], "red": [255,0,0], "blue": [0,255,0] };
function init()
{
var streetLayer = new esri.layers.ArcGISTiledMapServiceLayer(
"http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer");
var extent = new esri.geometry.Extent(-140.910, 11.267, -53.019, 64.002);
map = new esri.Map("map", { extent:extent });
map.addLayer(streetLayer);
dojo.connect(map,"onLoad", processLocations);
}
有人知道这是怎么回事吗?
我的研究表明这与IE和互联网区域有关,但无法证实。
当我将此粘贴到html文件并在internet explorer上打开时,它显示一条消息,它阻止了activex/script内容。更改Internet选项>高级>安全>允许活动内容在我的计算机上的文件中运行。如果警告在IE中消失,那么它应该在WebBrowser对象
WPF WebBrowser类有一个静态初始化器,在整个过程中启用FEATURE_LOCALMACHINE_LOCKDOWN
。你可以使用CoInternetSetFeatureEnabled
来关闭WebBrowser导航事件中的FEATURE_LOCALMACHINE_LOCKDOWN
。
此解决方案不需要修改显示的HTML文件,但是禁用了在显示可信本地内容时可能不需要的一些安全特性。有关本地计算机锁定的详细信息,请参阅http://technet.microsoft.com/en-us/library/cc782928(v=ws.10).aspx。
参见如何在WebBrowser控件中禁用PInvoke和https://github.com/TaoK/PoorMansTSqlFormatter/blob/d6b4f7bedc02ce1bf59acb16dd1f49609c216aa7/PoorMansTSqlFormatterDemo/FrameworkClassReplacements/CustomContentWebBrowser.cs中的单击声音,以获取示例用法
以下是我防止脚本警告的解决方案:
WebBrowser.ScriptErrorsSuppressed = true;
我也把我的网站作为一个受信任的网站在我的互联网设置中,我不知道这是否有帮助,但scriptErrorsSuppressed
属性对我来说已经足够了。
对我来说,问题是:
在Internet Explorer中启用ActiveX控件的步骤:
1。在Internet Explorer中选择"工具--> Internet选项"菜单。
2。在Internet选项对话框中选择"安全"选项卡。
3。选择适当的Web内容区域并单击自定义级别。
4。在ActiveX控件和插件下启用以下选项以启用或提示:下载签名ActiveX控件
2。运行ActiveX控件和插件
3。标记为脚本安全的ActiveX控件
5。单击Ok保存安全设置。
6。单击OK保存并关闭Internet选项对话框。
然后单击"不再显示此消息"