本地加载的HTML/Javascript文件在c# WebBrowser对象不能正确加载

Local load of HTML/Javascript file in C# WebBrowser object not loading correctly?

本文关键字:加载 WebBrowser 对象 不能 文件 HTML Javascript      更新时间:2023-09-26

我正在使用。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选项对话框。

然后单击"不再显示此消息"