1

这是有效的,但是我严格的 QA 说不会有控制台错误。

我已经将 iframe 写入 DOM,并设置了 .onload 事件;

var configureSDK = function () {
        alert('lets configure');
    }

    var init = function (config) {
        // pass configurables to global var
        settings = config;
        setupSDK(document);

        function setupSDK(d) {
            // setup iframe
            sdkportal = d.createElement('IFRAME');
            sdkportal.setAttribute('src', '//www.webtekkers.com');
            sdkportal.setAttribute('width', '100%');
            d.body.appendChild(sdkportal);
            sdkportal.onload(configureSDK());
        }
    }

就像我说的那样有效,但 Chrome 正在显示;

未捕获的类型错误:对象# 的属性“onload”不是函数

现在我知道,我真的应该为不同的浏览器设置单独的事件 AddEventListener|attachEvent('load|onload') ,但这是更多的工作。

这只是 Chrome 错了还是我错了?

请不要使用 jQuery 替代品

谢谢威尔

4

1 回答 1

5

错误信息虽然难以理解,但完全正确。 onload是一个属性,它的值是undefined直到你给它赋值。通常它会被分配一个对函数的引用

您可能的意思是将onload属性设置为configureSDK()函数引用:

sdkportal.onload = configureSDK;

或者作为函数调用(如果您在 中还有更多工作要做onlaod):

sdkportal.onload = function() {
  configureSDK();
};
于 2012-09-26T13:06:15.283 回答