以下是代码:
function getTime(j){
var stopClock= new Date();
delta[parseInt(j)]=stopClock.getMilliseconds()-start.getMilliseconds();
}
//REST OF THE CODE!!
for (var i = 0; i < 6; i++){
start = new Date();
document.write('<img src="'+URL[i]+'" width="1" height="1" alt="" onload="getTime('+i+');"/>');
}
问题有时是j的某些值(例如3或5),它表示没有定义getTime! (大部分时间都很好)......
我知道它可能是因为当它到达那个onload行时它可能还没有加载getTime函数,但是getTime函数位于代码的顶部,并且许多getTime都有响应......
答案 0 :(得分:2)
我不确定你要做什么(特别是使用document.write),但你可以尝试将该函数放入适当的范围,例如文档范围。
// pass the start time in milliseconds as well
document.getTime = function(startInMillis, j) {
var stopClock= new Date();
delta[j]=stopClock.getMilliseconds()-start.getMilliseconds();
};
尝试使用下一行代码中的document.getTime()。您还看到我将start变量放在getTime()中。鉴于图像的加载时间不是同步的(虽然你的循环是),你需要确保将它传递给函数,否则你可能会得到错误的结果。
答案 1 :(得分:0)
我认为尝试向您的请求引入回调的方式不是正确的路径。听起来您可能需要使用某些jsonP或其他技术来转移到另一个解决方案来绕过相同的域策略,然后您可以附加到相应的事件。
onload
甚至不是图像标记的正确事件。 onload
只应在<frameset>
或<body>
标记上有效。