Ошибка Javascript (JS) при инициализации внешних заблокированных ресурсов js во встроенном js - PullRequest
0 голосов
/ 07 сентября 2018

Ошибка Uncaught TypeError: $ (...). Flexslider не является функцией

При инициализации flexslider во встроенном Js, хотя загрузка flexslider в заблокированном внешнем js

Вот код

function parseJSAtOnload() {
        var moduleJsPath = "<?php echo BASE_URL.SHARED_ADDONPATH.'modules/fj/js/';?>";
        var links = [moduleJsPath + "flexslider/jquery.flexslider.js",moduleJsPath + "lazyload.min.js"],
        headElement = document.getElementsByTagName("head")[0],
        linkElement, i;
        for (i = 0; i < links.length; i++) {
            linkElement = document.createElement("script");
            linkElement.src = links[i];
            headElement.appendChild(linkElement);
        }
    }
    if (window.addEventListener)
        window.addEventListener("load", parseJSAtOnload, false);
    else if (window.attachEvent)
        window.attachEvent("onload", parseJSAtOnload);
    else window.onload = parseJSAtOnload;


window.onload = function(){
            $('.slider').flexslider({
                selector: ".form-group > .col-md-3",
                animation: "slide",
                animationLoop: false,
                itemWidth: 370,
                itemMargin: 5,
                maxItems:4,
                controlNav: false,
                slideshow: false,
                mousewheel:true
            });
}

1 Ответ

0 голосов
/ 07 сентября 2018
  • Ваш код правильный, работает нормально
  • Возможно, ваш файл jquery.flexslider.js не на правильном пути.

Решение:Применить функцию parseJSAtOnload() непосредственно к тегу <script>.

Вы получаете: TypeError: $(...).flexslider is not a function ошибка:

Проверьте это обновление:

function parseJSAtOnload() {
    var moduleJsPath = "<?php echo BASE_URL.SHARED_ADDONPATH.'modules/fj/js/';?>";
    var links = [moduleJsPath + "flexslider/jquery.flexslider.js",moduleJsPath + "lazyload.min.js"],
    headElement = document.getElementsByTagName("head")[0],
    linkElement, i;
    for (i = 0; i < links.length; i++) {
        linkElement = document.createElement("script");
        linkElement.src = links[i];
        headElement.appendChild(linkElement);
    }
}

parseJSAtOnload();//function call to DOM

window.onload = function(){
    $('.slider').flexslider({
        selector: ".form-group > .col-md-3",
        animation: "slide",
        animationLoop: false,
        itemWidth: 370,
        itemMargin: 5,
        maxItems:4,
        controlNav: false,
        slideshow: false,
        mousewheel:true
    });
}
...