2014-09-03 48 views
0

我一直在試圖呈現在頁面的用戶負載有一個Firefox插件一個ChartJS圖。我使用該插件SDK插入PageMod到每一頁:Mozilla的插件SDK chartjs不渲染

pageMod.PageMod({ 
    include: "*", 
    contentScriptFile: [data.url("jquery.js"), 
    data.url("Chart.js"), 
    data.url("onPageLoad.js")] 
}); 

在我onPageLoad.js,我插入使用jQuery的HTML5 canvas元素,然後嘗試畫上我的圖:

var chartData = [{value:100,color:'#4C86B9',highlight:'#508CC2',label:'Blue Team'},{value:150,color:'#B9525C',highlight:'#C25660',label:'Red Team'}]; 

$(document).ready(function() { 
    var ctx = document.getElementById("chart-area").getContext("2d"); 
    var myPieChart = new Chart(ctx).Pie(chartData, {responsive:true}); 
}); 

這隻會導致畫布面積擴大(我可以看到它的父的div元素擴大),但沒有圖形呈現。因此,我知道圖書館確實正在加載。我能找到的最接近的問題,以便爲ChartJS is not rendered,但其實這是一個完全不同的問題。我可以平凡繪製一個矩形,以我的畫布:

ctx.fillRect(10,20,200,100); 

所以,如果它不與畫布本身有問題,這是爲什麼ChartJS圖形渲染不?

+0

有你,如果你的'ready'函數被調用檢查? – paa 2014-09-04 10:02:38

+0

我知道ready函數被調用是因爲我可以畫出一個矩形作爲測試目的,我甚至可以通過console.log驗證chartData是否設置正確。畫布似乎調整到我想要的圖表大小,但沒有渲染實際圖形。 – user2036364 2014-09-04 13:35:00

回答

0

是jquery./js,chart.js之和onpageload.js文件位於你的數據文件夾?如果心不是問題,那麼問題可能是跨域的事情,所以你會必須通過設置內容腳本政策來解決:How to add Content Security Policy to Firefox extension

+0

對不起,我沒有指定 - 我所有的JavaScript文件確實在我的數據文件夾中,我知道他們正在加載很好。由於chart.js位於數據文件夾中(即,我正在本地加載它),因此它不應該需要跨域策略。 – user2036364 2014-09-04 13:32:16

+0

我想也許那些文件依賴於某些文件在那裏在網絡上,因此可能需要它。所以沒有依賴任何雲文件? – Noitidart 2014-09-04 16:39:22

+0

根據這裏的ChartJS文檔http://www.chartjs.org/docs/,您只需要包含chart.js文件,而不是任何其他依賴項,如jQuery。我甚至通過chart.js源代碼進行搜索,發現沒有導入的跡象,所以我不認爲它有任何依賴關係。 – user2036364 2014-09-05 00:22:06