Lưu ý: Những điều sau đây rất hữu ích để tránh bị trễ thời gian - đúng lúc. Ví dụ có thể được sử dụng chung cho tất cả các script (cần nó), nhưng đặc biệt được sử dụng với Greasemonkey. Nó cũng sử dụng API biểu đồ của Google làm ví dụ, nhưng giải pháp này vượt xa các API khác của Google và có thể được sử dụng ở bất kỳ nơi nào bạn cần để đợi tập lệnh tải.
Sử dụng google.load với lệnh gọi lại không giải quyết được sự cố khi sử dụng Greasemonkey để thêm biểu đồ Google. Trong quá trình này (Greasemonkey được đưa vào trang), nút tập lệnh www.google.com/jsapi được thêm vào. Sau khi thêm phần tử này cho javascript jsapi của Google, tập lệnh được chèn (hoặc trang) đã sẵn sàng để sử dụng lệnh google.load (cần được tải trong nút đã thêm), nhưng tập lệnh jsapi này vẫn chưa tải. Đặt thời gian chờ hoạt động, nhưng thời gian chờ chỉ là một cách giải quyết cho cuộc chạy đua thời gian tải tập lệnh Google jsapi với tập lệnh được chèn / trang. Di chuyển xung quanh nơi một tập lệnh thực thi google.load (và có thể là google.setOnLoadCallback) có thể ảnh hưởng đến tình huống chạy đua thời gian. Sau đây cung cấp giải pháp đợi phần tử tập lệnh google tải trước khi gọi google.load. Đây là một ví dụ:
// ********* 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";