QWebView不加载外部javascript(谷歌图表)

时间:2016-08-08 09:06:50

标签: javascript html qt webview qwebview

我想要做的是根据用户的需要生成“自定义”地图。对于我使用GeoCharts,其基本上是在html中包含2个javascript,另一个用于所选信息。

所以我创建了QWebView以呈现HTML(将在每个请求上自动生成),如下所示:

 GeoXML::GeoXML(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::GeoXML)
    {
        ui->setupUi(this);


        QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true);
        QString excRoute = QDir::currentPath ();


        QFile file(excRoute+"/index.html");
        if(!file.open(QIODevice::ReadOnly)) {
            QMessageBox::information(0, "error", file.errorString());
        }
        QString html= "";
        QTextStream in(&file);
        html = in.readAll();
        file.close();


        ui->webView->setHtml(html, QUrl("file:///"+excRoute+"/"));

    }

HTML:

<html>
  <head>
    <script type='text/javascript' src='res/loader.js'></script>
    <script type="text/javascript" src="res/jsapi.js"></script>
    <link rel="stylesheet" type="text/css" href="res/index.css"/>

    <script type='text/javascript'>
     google.charts.load('current', {'packages': ['geochart']});
     google.charts.setOnLoadCallback(drawMarkersMap);

      function drawMarkersMap() {
      var data = google.visualization.arrayToDataTable([
        ['Country', 'Poblacion'],
        ['Costa Rica', 'Norte de Costa Rica'],
        ['Mexico', 'Sur de Mexico'],
        ['Nicaragua', 'Nicaragua']
      ]);

      var options = {
        sizeAxis: { minValue: 0, maxValue: 100 },
        region: '013', // Western Europe
        displayMode: 'regions',
        colorAxis: {colors: ['#e7711c', '#4374e0']} // orange to blue
      };

      var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    };

    </script>
  </head>
  <body>
    <div id="chart_div" style="width: 900px; height: 500px;">
    </div>
  </body>
</html>

它确实渲染了我的页面。我看到我放在css中的红色背景颜色,但我无法看到地图。如果我在chrome中打开html它确实有效,但不在qt的QWebView中。

我在qrc中同时包含了两个js文件,把它们作为外部文件(托管在goolges网站上)和localy(如下面的代码片段),但是它没有用,也认为是this和{{ 3}}没有运气的帖子。

此外,this读取:

  

使用此方法时,WebKit假定外部资源如   JavaScript程序或样式表以UTF-8编码,除非   另有规定。例如,外部脚本的编码   可以通过HTML脚本标记的charset属性指定。   或者,也可以由Web服务器指定编码。

这让我认为它应该默认渲染我的地图。

0 个答案:

没有答案