国产探花免费观看_亚洲丰满少妇自慰呻吟_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對象【有多個,需要遍歷對象數組獲取到繪制的路徑對象?!?br /> 

  源代碼如下,下面代碼自己保存為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>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石台县| 德化县| 隆化县| 枣庄市| 曲水县| 盐亭县| 张家川| 登封市| 民勤县| 错那县| 曲靖市| 崇阳县| 吉木乃县| 长春市| 和政县| 商城县| 阳原县| 平乐县| 双辽市| 彭泽县| 林西县| 磴口县| 华容县| 当涂县| 开阳县| 长丰县| 马边| 周宁县| 贵溪市| 龙山县| 出国| 谷城县| 壶关县| 木兰县| 井陉县| 潼关县| 色达县| 宽甸| 阳新县| 家居| 镇宁|