国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

google chart顯示全部頂點的tooltip

2024-04-27 13:52:44
字體:
來源:轉載
供稿:網友

IE9部分瀏覽器支持svg繪圖,修改了獲取路徑的方法。由于IE得到的path信息會多一些空格出來,改為用正則獲取頂點信息
 

  今天在csdn看到一個使用google chart繪制LineChart圖標,需要提示顯示全部顯示出來,而不是當鼠標懸浮到頂點的時候才顯示提示信息tooltip。
 

  下午看了下google chart的api文檔,沒有發現有顯示全部提示信息的配置項目,隱藏提示信息tooltip的配置項目到是有一個: tooltip:{trigger:'none'},trigger默認有2個配置值,一個是'none',不顯示tooltip;一個是hover,鼠標移動到頂點的時候顯示。
 

  研究了下google chart生成的HTML結構后,google chart將canvas或者vml繪制在一個iframe里面。
 

  解決方法:獲取iframe里面的vml或者canvas的曲線圖路徑配置,然后使用js+div模擬。canvas為path,IE為v:shape對象【有多個,需要遍歷對象數組獲取到繪制的路徑對象。】
 

  源代碼如下,下面代碼自己保存為html文件查看,運行代碼加載google chart api時出錯。

<html>  <head>    <script type="text/javascript" src="https://www.google.com/jsapi"></script>    <style type="text/css">    .pop{border:solid 1px #000;width:100px;height:50px;position:absolute;z-index:10000}/*可以增加背景圖片什么的美化一下tooltip*/    </style>    <script type="text/javascript">        google.load("visualization", "1", { packages: ["corechart"] });        google.setOnLoadCallback(drawChart);        var chart, canvas, data = [['Year', 'Sales'], ['2004', 1000], ['2005', 1170], ['2006', 660], ['2007', 1030]];        function getPath() {            var doc = document.getElementById('chart_div').getElementsByTagName('iframe')[0].contentWindow.document;            if (doc.readyState == 'complete') {                clearInterval(window.timer);                var vml = doc.body.innerHTML.toLowerCase().indexOf('<svg')==-1, line = doc.getElementsByTagName(vml ? 'shape' : 'path');                if (vml) {                    for (var i = 0, j = line.length; i < j; i++)                        if (line[i].getAttribute('logicalname') == 'line#0') { line = line[i]; break; }                }                else line = line[0];                drawTooltip(vml ? line.path.value : line.getAttribute('d'));            }        }        function drawTooltip(p) {            var points = p.match(//d+(/./d+)?/g), pop, dv = document.getElementById('chart_div'), idx = 1,dataItem;            for (var i = 0, j = points.length; i < j; i += 2) {                pop = document.createElement('div');                pop.className = 'pop';                pop.style.left = points[i] + 'px';                pop.style.top = points[i + 1] + 'px';                dataItem = data[idx];                idx++;                pop.innerHTML = 'Year:' + dataItem[0]+'<br/>'+dataItem[1];                dv.appendChild(pop);            }        }        function drawChart() {            var data = google.visualization.arrayToDataTable(window.data);            var options = { title: 'Company Performance', tooltip: {trigger:'none'} };            chart = new google.visualization.LineChart(document.getElementById('chart_div'));            chart.draw(data, options);            // google.visualization.events.addListener(chart, 'ready', function () {});//IE不觸發ready事件,只好用計時器來檢查iframe的readystate了            window.timer = setInterval(getPath, 500);        }    </script>  </head>  <body>    <div id="chart_div" style="width: 900px; height: 500px;position:relative;"></div>  </body></html>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河南省| 时尚| 寿宁县| 凤阳县| 六安市| 彭山县| 合作市| 舟曲县| 伽师县| 呼图壁县| 祁东县| 舟山市| 昌邑市| 成武县| 兰溪市| 务川| 武城县| 同仁县| 泸水县| 葫芦岛市| 扎鲁特旗| 永寿县| 阜阳市| 乡城县| 竹北市| 页游| 当涂县| 获嘉县| 方城县| 乌兰察布市| 永州市| 滁州市| 墨玉县| 饶平县| 兴城市| 库尔勒市| 波密县| 环江| 东乡族自治县| 左权县| 乌鲁木齐市|