我正在使用.NET Framework4.0( WPF)尝试在WebBrowser对象(System.Windows.Controls.WebBrowser)中加载一个本地HTML,该文件具有本地嵌入的javascript并从远程服务器加载。问题是,当加载时,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和互联网区域有关,但一直无法证实。
发布于 2011-04-25 06:47:32
当我将其粘贴到html文件中并在上打开时,它会显示一条消息,说明它阻止了activex/script内容。更改Internet选项>高级>安全>允许活动内容在我的计算机上的文件中运行。如果警告在IE中消失,那么它应该在WebBrowser对象中工作。
发布于 2013-04-19 12:28:52
WPF WebBrowser类具有一个静态初始化器,它支持整个进程的FEATURE_LOCALMACHINE_LOCKDOWN
。您可以使用CoInternetSetFeatureEnabled
在FEATURE_LOCALMACHINE_LOCKDOWN
导航事件上关闭FEATURE_LOCALMACHINE_LOCKDOWN
。
此解决方案不要求您修改正在显示的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。
发布于 2013-12-15 14:53:45
以下是我预防剧本的解决方案:
WebBrowser.ScriptErrorsSuppressed = true;
此外,我已经把我的网站作为一个可信的网站在我的互联网设置,我不知道这是否有帮助,但scriptErrorsSuppressed
的属性对我来说已经足够了。
希望这能有所帮助。
https://stackoverflow.com/questions/5775853
复制相似问题