packages/cdp-lazyload/src/scripts/cdp.lazyload.js
function _appendSync($script) {
        var _src = $script.attr("src");
        if (!_src) {
            _src = $script.data("src");
        }

        var _url = function ($elem) {
            var ret = _src;
            if (requirejs && typeof requirejs.toUrl === "function") {
                ret = requirejs.toUrl(ret);
                $elem.attr("src", ret);
            }
            return ret;
        }($script);


        var toLocation = function (url) {
            // 明示的に autoDomainAssign = false が指定されているときは、_src を返す
            if (false === Config.autoDomainAssign) {
                return _src;
            } else {
                var ret = url.split("?");

                if (!ret || 0 === ret.length) {
                    return url;
                } else {
                    return ret[0];
                }
            }
        };

        var code;

        $.ajax({
            url: _url,
            method: "GET",
            async: false,
            dataType: "text",
            success: function (data) {
                code = data;
            },
            error: function (data, status) {
                console.error(TAG + "lazyLoad() ajax request failed. [status: " + status + "][src: " + _url + "]");
            }
        });
        if (code) {
            // sourceURL が指定されていなければ追加
            if (!code.match(/\/\/@ sourceURL=[\s\S]*?\n/g) && !code.match(/\/\/# sourceURL=[\s\S]*?\n/g)) {
                code = code + "\n//# " + "sourceURL=" + toLocation(_url);
            }

            // script を有効化
            $.globalEval(code);

            // <head> に <script> として追加
            $script.attr("type", "false");
            document.head.appendChild($script[0]);
            $script.removeAttr("type");
        }
    }
function _appendSync($script) {
        var _src = $script.attr("src");
        if (!_src) {
            _src = $script.data("src");
        }

        var _url = function ($elem) {
            var ret = _src;
            if (requirejs && typeof requirejs.toUrl === "function") {
                ret = requirejs.toUrl(ret);
                $elem.attr("src", ret);
            }
            return ret;
        }($script);


        var toLocation = function (url) {
            // 明示的に autoDomainAssign = false が指定されているときは、_src を返す
            if (false === Config.autoDomainAssign) {
                return _src;
            } else {
                var ret = url.split("?");

                if (!ret || 0 === ret.length) {
                    return url;
                } else {
                    return ret[0];
                }
            }
        };

        var code;

        $.ajax({
            url: _url,
            method: "GET",
            async: false,
            dataType: "text",
            success: function (data) {
                code = data;
            },
            error: function (data, status) {
                console.error(TAG + "lazyLoad() ajax request failed. [status: " + status + "][src: " + _url + "]");
            }
        });
        if (code) {
            // sourceURL が指定されていなければ追加
            if (!code.match(/\/\/@ sourceURL=[\s\S]*?\n/g) && !code.match(/\/\/# sourceURL=[\s\S]*?\n/g)) {
                code = code + "\n//# " + "sourceURL=" + toLocation(_url);
            }

            // script を有効化
            $.globalEval(code);

            // <head> に <script> として追加
            $script.attr("type", "false");
            document.head.appendChild($script[0]);
            $script.removeAttr("type");
        }
    }
function _appendSync ( $script ) { var _src = $script . attr ( "src" ) ; if ( ! _src ) { _src = $script . data ( "src" ) ; } var _url = function ( $elem ) { var ret = _src ; if ( requirejs && typeof requirejs . toUrl === "function" ) { ret = requirejs . toUrl ( ret ) ; $elem . attr ( "src" , ret ) ; } return ret ; } ( $script ) ; var toLocation = function ( url ) { // 明示的に autoDomainAssign = false が指定されているときは、_src を返す if ( false === Config . autoDomainAssign ) { return _src ; } else { var ret = url . split ( "?" ) ; if ( ! ret || 0 === ret . length ) { return url ; } else { return ret [ 0 ] ; } } } ; var code ; $ . ajax ( { url : _url , method : "GET" , async : false , dataType : "text" , success : function ( data ) { code = data ; } , error : function ( data , status ) { console . error ( TAG + "lazyLoad() ajax request failed. [status: " + status + "][src: " + _url + "]" ) ; } } ) ; if ( code ) { // sourceURL が指定されていなければ追加 if ( ! code . match ( / \/\/@ sourceURL=[\s\S]*?\n / g ) && ! code . match ( / \/\/# sourceURL=[\s\S]*?\n / g ) ) { code = code + "\n//# " + "sourceURL=" + toLocation ( _url ) ; } // script を有効化 $ . globalEval ( code ) ; // <head> に <script> として追加 $script . attr ( "type" , "false" ) ; document . head . appendChild ( $script [ 0 ] ) ; $script . removeAttr ( "type" ) ; } }
\~english
Load script and append to head with "sourceURL".

@param $script {JQuery} [in] script's jQuery object

\~japanese
"sourceURL" コメントと共に、script を同期読み込み
jQuery.append() の Hack。 eval() でスクリプトを有効化している。
Developer Tool の Source Tree 上に表示するため、sourceURL が無ければ埋め込む

@param $script {JQuery} [in] script の jQuery object
\ ~english Load script and append to head with sourceURL .