javascript onload函数有效,onresize没有

时间:2013-12-04 20:42:24

标签: javascript onload

我的标题中有一个功能可以调整iframe的大小,我会在window.onloadwindow.onresize的页脚中调用它。

var resize = function(elementId) {
        document.getElementById(elementId).height = parseInt(document.getElementById(elementId).offsetWidth)*0.63;
    };

onload有效:

window.onload = resize("youtube");

onresize没有:

window.onresize = resize("youtube")

如果我的javascript出错了,请原谅我。我还是有点新鲜的。

2 个答案:

答案 0 :(得分:4)

您正在执行功能而不是返回功能。

因此,如果您记录window.onload包含的内容,则会包含undefined

你需要返回一个函数(你可能想要像我一样缓存元素):

var resize = function(elementId) {
    return function(){
        var element = document.getElementById(elementId);
        element.height = parseInt(element.offsetWidth) * 0.63;
    };
};

上述内容仍允许您这样做:

window.onload = resize("youtube");

由于resize现在返回回调window.onload(理论上)现在与以下内容相同:

window.onload = function(){
    var element = document.getElementById("youtube");
    element.height = parseInt(element.offsetWidth) * 0.63;
};

答案 1 :(得分:3)

window.onresize(以及此问题window.onload)应该是函数引用;

window.onresize = function () {
  resize('youtube')
}

您的实现将执行函数并将返回值分配给window属性。