c#带有Highchart的WPF Webbrowser,来自外部源的Javascript不起作用“此页面上的脚本中发生错误”
Posted
技术标签:
【中文标题】c#带有Highchart的WPF Webbrowser,来自外部源的Javascript不起作用“此页面上的脚本中发生错误”【英文标题】:c# WPF Webbrowser with Highchart, Javascript from external source not working "An error has occurred in the script on this page" 【发布时间】:2018-05-18 13:56:01 【问题描述】:我试图找出为什么我的图表没有显示在我的 WPF WebBrowser 中。 当我加载我的 html 文件时,出现以下错误:
我认为 IE 可能会阻止 WPF WebBrowser 中的 Highchart(来自外部源的 javascript),因为当我尝试使用 IE 加载它时,我的页面被限制运行脚本或 ActiveX 控件:
我知道how 允许 IE 运行脚本或 ActiveX 控件,但我不知道如何在我的 WPF WebBrowser 中允许它。
我已尝试使用Mark Of The Web,但我不确定我是否正确使用它?
<!-- saved from url=(0016)http://localhost -->
我也尝试过一些绝望的方法,比如将我的程序添加到:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\MyProgram.exe 和 MyProgram.vshost.exe,值为 0x00002af9
非常感谢您的帮助。
I don't have find any answer that fix this problem so far.
我的 html 文件:
<!DOCTYPE HTML>
<!-- saved from url=(0016)http://localhost -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highcharts Example</title>
<style type="text/css">
</style>
</head>
<body>
<script src="https://code.highcharts.com/highcharts.src.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div>
<script type="text/javascript">
Highcharts.chart('container',
chart:
type: 'spline',
inverted: true
,
title:
text: 'Atmosphere Temperature by Altitude'
,
subtitle:
text: 'According to the Standard Atmosphere Model'
,
xAxis:
reversed: false,
title:
enabled: true,
text: 'Altitude'
,
labels:
formatter: function ()
return this.value + 'km';
,
maxPadding: 0.05,
showLastLabel: true
,
yAxis:
title:
text: 'Temperature'
,
labels:
formatter: function ()
return this.value + '°';
,
lineWidth: 2
,
legend:
enabled: false
,
tooltip:
headerFormat: '<b>series.name</b><br/>',
pointFormat: 'point.x km: point.y°C'
,
plotOptions:
spline:
marker:
enable: false
,
series: [
name: 'Temperature',
data: [[0, 15], [10, -50], [20, -56.5], [30, -46.5], [40, -22.1],
[50, -2.5], [60, -27.7], [70, -55.7], [80, -76.5]]
]
);
</script>
</body>
</html>
更新
请求:警报(navigator.userAgent);
结果:
Signification
解决方案
在我的 PC 安全配置没有任何更改的情况下,我通过将其添加到我的 html 文件的标题中来解决了这个问题:
<meta http-equiv="x-ua-compatible" content="IE=11">
有关更多信息,请参阅 Alexander Ryan Baggett 答案或此link。
【问题讨论】:
当你alert(navigator.userAgent);
时它会说什么?
highchart js 使用 websockets 吗?
上面写着“Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko”。
您是否尝试过本地计算机锁定注册表设置? msdn.microsoft.com/en-us/library/ee330732(v=vs.85).aspx
不,我没有尝试过,我应该在其中添加 MyProgram.exe 和 MyProgram.vshost.exe 并使用 0x00000000 值吗?我今晚试试
【参考方案1】:
好的,这对我来说很好。
我添加了<meta http-equiv="x-ua-compatible" content="IE=11">
。我还通过将 HTML 文件添加到项目并将其设置为 copy always
在 Visual Studio 中本地加载了 HTML 文件。我最终也不必在我的机器上进行任何注册表调整。
C# 文件
using System;
using System.IO;
using System.Windows;
namespace ***_question
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
string curDir = Directory.GetCurrentDirectory();
webbrowser1.Navigate(new Uri(String.Format("file:///0/test.html", curDir))) ;
HTML 文件
<!DOCTYPE HTML>
<!-- saved from url=(0016)http://localhost -->
<html>
<head>
<meta http-equiv="x-ua-compatible" content="IE=11">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highcharts Example</title>
<style type="text/css">
</style>
</head>
<body>
<script src="https://code.highcharts.com/highcharts.src.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div>
<script type="text/javascript">
Highcharts.chart("container",
chart:
type: "spline",
inverted: true
,
title:
text: "Atmosphere Temperature by Altitude"
,
subtitle:
text: "According to the Standard Atmosphere Model"
,
xAxis:
reversed: false,
title:
enabled: true,
text: "Altitude"
,
labels:
formatter: function ()
return this.value + "km";
,
maxPadding: 0.05,
showLastLabel: true
,
yAxis:
title:
text: "Temperature"
,
labels:
formatter: function ()
return this.value + "°";
,
lineWidth: 2
,
legend:
enabled: false
,
tooltip:
headerFormat: "<b>series.name</b><br/>",
pointFormat: "point.x km: point.y°C"
,
plotOptions:
spline:
marker:
enable: false
,
series: [
name: "Temperature",
data: [[0, 15], [10, -50], [20, -56.5], [30, -46.5], [40, -22.1],
[50, -2.5], [60, -27.7], [70, -55.7], [80, -76.5]]
]
);
</script>
</body>
</html>
它也给出了很好的结果。
如果此代码不能解决您的问题。我怀疑您的本地 Intranet 安全区设置需要更改。
【讨论】:
哇,非常感谢!它终于起作用了:)我很感激,你无法想象。 部分解决了我的问题! 也适用于 XPlot 库。谢谢。以上是关于c#带有Highchart的WPF Webbrowser,来自外部源的Javascript不起作用“此页面上的脚本中发生错误”的主要内容,如果未能解决你的问题,请参考以下文章
JQuery Javascript 函数以 JSON 格式返回 highchart 图形数据源,并通过 Selenium 和 C# 正确格式化