我有以下代码,它有效,但我讨厌它:)我想要做一些更清洁的东西。
这个想法是: - 我在窗口对象中添加了一个resize事件处理程序; - 我使用setTimeout让我的代码等待用户完成大小调整,当... doneResizing函数启动并调用方法 - Canvas.resize()方法准确。
我觉得我做错了就在这里: 我需要捕捉"画布"的原始宽度和高度。元素和宽度"和"身高"调整大小后的那个元素。
现在我正在使用全局变量(另一个范围内的全局变量无关紧要),你知道一种更好的方法吗?
function doneResizing() {
if (Canvas.isInitialized()) {
$timeout(function() {
var cw = element.width();
var ch = element.height();
// Resize the svg.
$('#canvas svg').width(cw);
$('#canvas svg').height(ch);
Canvas.resize(iw, ih, cw, ch, $('#canvas'), $('#canvas svg'));
iw = null;
ih = null;
}, 10);
}
};
var id;
var iw, ih;
$(window).resize(function(event) {
clearTimeout(id);
if (!iw) iw = element.width();
if (!ih) ih = element.height();
element.addClass('loading');
$('#canvas svg').hide();
id = setTimeout(doneResizing, 500);
});
谢谢!
答案 0 :(得分:1)
我读到的要求是:
你已经完成了大部分工作,因此需要进行一些调整才能完成它:
var id;
// record the initial size
var iw = element.width();
var ih = element.height();
$(window).resize(function (event) {
clearTimeout(id);
element.addClass('loading');
$('#canvas svg').hide();
id = setTimeout(doneResizing, 500);
});
function doneResizing() {
if (Canvas.isInitialized()) {
var cw = element.width();
var ch = element.height();
// Resize the svg.
$('#canvas svg').width(cw);
$('#canvas svg').height(ch);
Canvas.resize(iw, ih, cw, ch, $('#canvas'), $('#canvas svg'));
// Now record the last position as the new start size
iw = cw;
ih = ch;
}
};
你没有显示提供element
的代码,因此有一个范围(没有双关语)将所有这些放在一个函数中并在window
或命名空间中引用你的全局变量(真的是另一个一次性嵌套包装函数。)