Javascript 重新刷新窗口大小
我有这个带有Chart.js和canvas元素的完整随机图条脚本 当我通过检查元素或测试脚本中的tablet/phone大小来调整窗口大小时,它不会调整大小(因为预期的css),并且会干扰我的检查过程。我尝试过让脚本在调整窗口大小时重新启动,但我无法让它工作,尝试了几种不同的方法 脚本:Javascript 重新刷新窗口大小,javascript,jquery,canvas,Javascript,Jquery,Canvas,我有这个带有Chart.js和canvas元素的完整随机图条脚本 当我通过检查元素或测试脚本中的tablet/phone大小来调整窗口大小时,它不会调整大小(因为预期的css),并且会干扰我的检查过程。我尝试过让脚本在调整窗口大小时重新启动,但我无法让它工作,尝试了几种不同的方法 脚本: (function($) { $(document).ready(function(barChart) { (function() { var data = [], b
(function($) {
$(document).ready(function(barChart) {
(function() {
var data = [],
barsCount = 24,
labels = new Array(barsCount),
updateDelayMax = 500,
$id = function(id) {
return document.getElementById(id);
},
random = function(max) {
return Math.round(Math.random() * 100)
},
helpers = Chart.helpers;
Chart.defaults.global.responsive = true;
for (var i = barsCount - 1; i >= 0; i--) {
data.push(Math.round(Math.random() * 100));
};
new Chart($id('header-random-bar-graph').getContext('2d')).Bar({
labels: labels,
datasets: [{
fillColor: 'rgba(220,220,220,0.1)',
data: data
}]
}, {
showScale: false,
barShowStroke: false,
barValueSpacing: 1,
showTooltips: false,
onAnimationComplete: function() {
var heroChart = this,
timeout;
this.options.onAnimationComplete = randomUpdate;
this.options.animationEasing = 'easeOutQuint';
randomUpdate();
function randomUpdate() {
heroChart.stop();
clearTimeout(timeout);
timeout = setTimeout(function() {
var randomNumberOfBars = Math.floor(Math.random() * barsCount),
i;
for (i = randomNumberOfBars - 1; i >= 0; i--) {
heroChart.datasets[0].bars[Math.floor(Math.random() * barsCount)].value = Math.round(Math.random() * 100);
};
heroChart.update();
}, Math.random() * updateDelayMax);
};
}
});
})();
});
})(jQuery);
我试着在结尾加上:
$(window).resize(barChart);
然后我在Chrome中得到控制台错误:“未定义条形图”
JSFIDLE:,但小提琴无法正确显示问题。
条形图
中定义了一些函数,您必须将其移动到比小提琴更高的位置2行
(function($) {
$(document).ready(function(barChart) {
//barChart is only defined within this closure
(function() {
//your code...
})();
$(window).resize(barChart);
});
})(jQuery);
编辑
如果我理解正确,那么您正在尝试调用您在$(document.ready)上调用的方法,在调整窗口大小时再次调用该方法。对上述代码稍作修改即可:
(function($) {
$(document).ready(function() {
//define a function to use it again as a handler
function barChart() {
//your code...
});
//execute the function
barChart();
//set function as resize event handler
$(window).resize(barChart);
});
})(jQuery);
顺便说一句:我认为你不需要
(function($) {...})(jQuery);
以及
$(document).ready(function() {...});
但我可能错了,这并不是你问题的一部分,所以,不管怎样:)柱状图定义了更多的函数,你必须把它移到比小提琴更高的两行
(function($) {
$(document).ready(function(barChart) {
//barChart is only defined within this closure
(function() {
//your code...
})();
$(window).resize(barChart);
});
})(jQuery);
编辑
如果我理解正确,那么您正在尝试调用您在$(document.ready)上调用的方法,在调整窗口大小时再次调用该方法。对上述代码稍作修改即可:
(function($) {
$(document).ready(function() {
//define a function to use it again as a handler
function barChart() {
//your code...
});
//execute the function
barChart();
//set function as resize event handler
$(window).resize(barChart);
});
})(jQuery);
顺便说一句:我认为你不需要
(function($) {...})(jQuery);
以及
$(document).ready(function() {...});
但是我可能错了,这并不是你问题的一部分,所以,不管怎样:)我按照你说的做了,当窗口调整大小时,它似乎仍然没有重新启动。我按照你说的做了,脚本可以工作,但在调整窗口大小时仍然不会重新启动。我按照你说的做了,并且在调整窗口大小时它似乎仍然不会重新启动。正如您所说,我已经完成了,脚本可以工作,但在调整窗口大小时仍然无法重新启动。