नोट: निम्नलिखित समय देरी से बचने के लिए निम्नलिखित अच्छा है - यह समय पर है। उदाहरण आमतौर पर सभी स्क्रिप्ट्स (इसकी आवश्यकता) द्वारा उपयोग किया जा सकता है, लेकिन विशेष रूप से Greasemonkey के साथ प्रयोग किया जाता था। यह एक उदाहरण के रूप में Google चार्ट एपीआई का भी उपयोग करता है, लेकिन यह समाधान अन्य Google एपीआई से आगे जाता है और किसी भी स्क्रिप्ट को लोड होने के लिए प्रतीक्षा करने के लिए कहीं भी इस्तेमाल किया जा सकता है।
कॉलबैक के साथ google.load का उपयोग करके Google चार्ट जोड़ने के लिए Greasemonkey का उपयोग करते समय समस्या का समाधान नहीं हुआ। प्रक्रिया में (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";
अच्छा सवाल है, यहाँ एक कड़ी है: http://friendlybit.com/js/lazy-loading -सिंक्रोनस-जावास्क्रिप्ट/(दूसरे शब्दों में: अभी तक कोई सुराग नहीं) – mindandmedia
मैंने देखा, कि document.write ('anything') पिछले एचटीएमएल को भी साफ़ कर देगा, हो सकता है कि दस्तावेज़ सेटटाइम के संदर्भ में अजीब हो? – mindandmedia