c # WPF Webbrowser с Highchart, Javascript из внешнего источника не работает «Произошла ошибка в скрипте на этой странице»

1

Я пытаюсь выяснить, почему моя диаграмма не отображается в моем WPF WebBrowser. Когда я загружаю свой html файл, у меня есть следующая ошибка:

Изображение 174551

Я думаю, что IE может блокировать Highchart (Javascript из внешнего источника) в WPF WebBrowser, потому что, когда я пытаюсь загрузить его в IE, моя страница была ограничена запуском скрипта или ActiveX Control:

Изображение 174551

Я знаю, как разрешить IE запускать скрипт или ActiveX Control, но я не знаю, как разрешить его в моем WPF WebBrowser.

Я пробовал с Mark Of The Web, но я не уверен, правильно ли я использую его?

<!-- saved from url=(0016)http://localhost -->

Я также пробовал какой-то отчаянный метод, например, добавить свою программу в:

HKEY_CURRENT_USER\Программное обеспечение \Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\MyProgram.exe и MyProgram.vshost.exe со значением 0x00002af9

Я бы очень признателен за помощь.

На данный момент я не нашел ответа, который исправит эту проблему.

Мой 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);

Результат:

Изображение 174551

значение


РЕШЕНИЕ

Без каких-либо изменений в моей настройке безопасности ПК я исправил эту проблему, добавив ее в заголовок моего html файла:

<meta http-equiv="x-ua-compatible" content="IE=11"> 

См. Alexander Ryan Baggett Answer для получения дополнительной информации или по этой ссылке.

  • 1
    Что это говорит, когда вы делаете alert(navigator.userAgent); ?
  • 0
    Использует ли highchart js websockets?
Показать ещё 4 комментария
Теги:
wpf
highcharts
webbrowser-control

1 ответ

1
Лучший ответ

Хорошо, это отлично работает для меня.

Я добавил <meta http-equiv="x-ua-compatible" content="IE=11">. Я также загрузил файл HTML локально в visual studio, добавив его в проект и установив его для copy always. Мне тоже не пришлось делать какие-либо изменения в реестре на моей машине.

С# файл

        using System;
        using System.IO;
        using System.Windows;

        namespace Stackoverflow_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>

Это также дает хороший результат. Изображение 174551

Если этот код не решит проблему. Я подозреваю, что что-то нужно изменить в настройках зоны локальной интрасети.

  • 0
    Вау, спасибо большое! Это наконец работает :) Я так благодарен, вы не можете себе представить. Часть <meta http-эквивалент = "x-ua-совместимый" content = "IE = 11"> исправила мою проблему!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню