【问题标题】:Local load of HTML/Javascript file in C# WebBrowser object not loading correctly?C# WebBrowser 对象中 HTML/Javascript 文件的本地加载未正确加载?
【发布时间】:2011-08-12 03:54:18
【问题描述】:

我正在使用 .NET Framework 4.0(带有 WPF)尝试使用本地嵌入的 javascript 和从远程服务器加载的 WebBrowser 对象 (System.Windows.Controls.WebBrowser) 中加载本地 HTML 文件。问题是,加载时 javascript(带有 dojo 的 ajax)没有在 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 和 Internet 区域有关,但无法证实。

【问题讨论】:

    标签: c# javascript wpf browser


    【解决方案1】:

    对我来说,问题是:

    在 Internet Explorer 中启用 ActiveX 控件的步骤:

    1.从 Internet Explorer 中选择工具 --> Internet 选项菜单。

    2.从 Internet 选项对话框中选择安全选项卡。

    3.选择适当的 Web 内容区域并单击自定义级别。

    4.使以下选项在 ActiveX 控件和插件下可用以启用或提示:1.下载签名的 ActiveX 控件

    2.运行ActiveX控件和插件

    3.Script ActiveX 控件标记为安全的脚本

    5.点击确定保存安全设置。

    6.单击“确定”保存并关闭“Internet 选项”对话框。

    然后点击不再显示此消息。

    【讨论】:

      【解决方案2】:

      这是我防止脚本警告的解决方案:

      WebBrowser.ScriptErrorsSuppressed = true;
      

      此外,我已将我的网站设置为我的 Internet 设置中的受信任网站,我不知道这是否有帮助,但 scriptErrorsSuppressed 属性对我来说已经足够了。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        WPF WebBrowser 类有一个静态初始化程序,它为整个进程启用FEATURE_LOCALMACHINE_LOCKDOWN。您可以使用CoInternetSetFeatureEnabled 关闭FEATURE_LOCALMACHINE_LOCKDOWN 在WebBrowser 导航事件上的回退。

        此解决方案不需要您修改正在显示的 HTML 文件,但会禁用一些您在显示受信任的本地内容时可能不需要的安全功能。有关本地计算机锁定的更多信息,请参阅 http://technet.microsoft.com/en-us/library/cc782928(v=ws.10).aspx

        请参阅How to disable click sound in WebBrowser Control 了解 PInvoke 和https://github.com/TaoK/PoorMansTSqlFormatter/blob/d6b4f7bedc02ce1bf59acb16dd1f49609c216aa7/PoorMansTSqlFormatterDemo/FrameworkClassReplacements/CustomContentWebBrowser.cs 了解示例用法。

        【讨论】:

          【解决方案4】:

          当我将其粘贴到 html 文件并在 Internet Explorer 上打开时,它会显示一条消息,指出它阻止了 activex/script 内容。更改 Internet 选项 > 高级 > 安全 > 允许活动内容在我的电脑上的文件中运行。如果警告在 IE 中消失,那么它应该在 WebBrowser 对象中工作

          【讨论】:

          • 所以更新这篇文章,上面显示的内容只在浏览器中有效。设置此项对 WebBrowser 对象没有影响。解决方案是使用 html 文件顶部的Mark of the Web
          猜你喜欢
          • 1970-01-01
          • 2015-05-24
          • 2023-03-04
          • 1970-01-01
          • 1970-01-01
          • 2012-07-18
          • 1970-01-01
          • 2020-07-19
          • 2023-04-03
          相关资源
          最近更新 更多