नोट: निम्नलिखित एक समय की देरी से बचने के लिए अच्छा है - यह सिर्फ समय में है। उदाहरण का उपयोग आम तौर पर सभी लिपियों (इसकी ज़रूरत) द्वारा किया जा सकता है, लेकिन विशेष रूप से ग्रीसेमेक के साथ इसका उपयोग किया गया था। यह एक उदाहरण के रूप में Google चार्ट एपीआई का भी उपयोग करता है, लेकिन यह समाधान अन्य Google एपीआई से आगे निकल जाता है और इसका उपयोग कहीं भी किया जा सकता है जिसे आपको स्क्रिप्ट के लोड होने की प्रतीक्षा करने की आवश्यकता होती है।
Google चार्ट को जोड़ने के लिए Greasemonkey का उपयोग करते समय कॉलबैक के साथ google.load का उपयोग करने से समस्या हल नहीं हुई। प्रक्रिया में (Greasemonkey इंजेक्शन इन पेज), www.google.com/jsapi स्क्रिप्ट नोड जोड़ा जाता है। Google के jsapi जावास्क्रिप्ट के लिए इस तत्व को जोड़ने के बाद, इंजेक्ट (या पृष्ठ) स्क्रिप्ट google.load कमांड (जिसे अतिरिक्त नोड में लोड करने की आवश्यकता है) का उपयोग करने के लिए तैयार है, लेकिन यह jsapi स्क्रिप्ट अभी भी लोड नहीं हुई है। एक टाइमआउट सेट करना काम कर रहा था, लेकिन टाइमआउट केवल Google jsapi स्क्रिप्ट लोड के इंजेक्शन / पृष्ठ स्क्रिप्ट के साथ दौड़ के लिए एक समाधान था। एक स्क्रिप्ट के चारों ओर घूमना जहां google.load (और संभवतः google.setOnLoadCallback) निष्पादित करता है, समय की दौड़ की स्थिति को प्रभावित कर सकता है। निम्न एक समाधान को हल करता है जो google.load को कॉल करने से पहले लोड करने के लिए Google स्क्रिप्ट तत्व की प्रतीक्षा करता है। यहाँ एक उदाहरण है:
// ********* INJECTED SCRIPT *********//
// add element
var gscript = document.createElement('script');
gscript.setAttribute("type", "application/javascript");
gscript.setAttribute("id", "XX-GMPlusGoogle-XX");
document.body.appendChild(gscript);
// event listener setup
gscript.addEventListener("load",
function changeCB(params) {
gscript.removeEventListener("load", changeCB);
google.load("visualization", "1", {packages:["corechart"], "callback":
function drawChart() {
var data;
// set the durationChart data (not in example)
data = new google.visualization.arrayToDataTable(durationChart);
var options = {
title:"Chart Title",
legend: {position:"none"},
backgroundColor:"white",
colors:["white","Blue"],
width: window.innerWidth || document.body.clientWidth,
height: window.innerHeight || document.body.clientHeight,
vAxis: {title: "Durations", baselineColor: "black", textStyle:{fontSize:12}},
hAxis: {title: "Days Since First Instance"},
height: ((cnt > 5)? cnt * 50 : 300),
isStacked: true
}; // options
// put chart into your div element
var chart = new google.visualization.BarChart(document.getElementById('XX-ChartDiv-XX'));
chart.draw(data, options);
} // drawChart function
}); //packages within google.load & google load
} // callback changeCB
);
// can use SSL as "https://www.google.com/jsapi";
gscript.src = "http://www.google.com/jsapi";