如何模拟动态元素的onreadystatechange和状态变化

时间:2019-02-28 07:55:31

标签: javascript jquery jasmine mocking jasmine-jquery

使用以下功能动态加载CDN脚本以减少加载时间,如何在JS单元测试用例中进行介绍。

function loadAsync(src, callback) {
        var script = document.createElement('script');

        script.src = src;
        if (callback !== null) {
            if (script.readyState) { // IE, incl. IE9
                script.onreadystatechange = function() {
                    if (script.readyState === 'loaded' || script.readyState === 'complete') {
                        script.onreadystatechange = null;
                        callback();
                    }
                };
            } else {
                script.onload = function() { // Other browsers
                    callback();
                };
            }
        }
        document.getElementsByTagName('head')[0].appendChild(script);
    }

在上面的函数中,动态添加了脚本标记,它处于就绪状态,并且在onload状态下绑定了一些要加载的回调,这些不会自动覆盖,如何为该动态元素编写模拟。

函数调用

loadAsync('https://example.com/some.js', callback)'

0 个答案:

没有答案