相关疑难解决方法(0)

试图在脚本标记上触发onload事件

我正在尝试按顺序加载一组脚本,但onload事件并没有为我开火.

    var scripts = [
        '//cdnjs.cloudflare.com/ajax/libs/less.js/1.3.3/less.min.js',
        '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.min.js',
        MK.host+'/templates/templates.js'
    ];

    function loadScripts(scripts){
        var script = scripts.shift();
        var el = document.createElement('script');
        el.src = script;
        el.onload = function(script){
            console.log(script + ' loaded!');
            if (scripts.length) {
                loadScripts(scripts);
            }
            else {
                console.log('run app');
                MK.init();
            }
        };

        $body.append(el);
    }

    loadScripts(scripts);
Run Code Online (Sandbox Code Playgroud)

我猜想当使用jQuery将元素附加到DOM时,el.onload等本机事件不会触发.如果我使用原生,document.body.appendChild(el)那么它会按预期激发.

javascript jquery onload

89
推荐指数
2
解决办法
10万
查看次数

Angular 2如何从innerHTML执行脚本标记

我已经HTML通过http.get()方法加载页面,并且我将此页面的内容添加到div标签.

getRequestToAssignPage (param: string) : any {

    return this.$http.get(param)
        .map((res: Response) => {

            this.status = res;

            return res.text();
        })
        .toPromise()
        .then(response => {



            let restr: string = response;



            restr = restr.replace(/(<head[^>]*)(?:[^])*?\/head>/ig, '')
                .replace(/(<(\/?)body([^>]*?)>)/g, '')
                .replace(/(<style[^>]*)(?:[^])*?\/style>/g, '')
                .replace(/(<(\/?)html([^>]*?)>)/g, '')
                .replace(/(<app-root[^>]*)(?:[^])*?\/app-root>/ig, '')
                .replace(/(<\?[\s\S]*?\?>)|(<!DOCTYPE\s+\w+\s+\[[\s\S]*?\]>)|(<!\w[\s\S]*?>)/g, '')
                .replace(/(href\s*=\s*(?:"))/ig, 'href="/#')
                .replace(/(href\s*=\s*(?:'))/ig, "href='/#");



            this.response = restr;


        })
        .catch(error => this.status = error );

}
Run Code Online (Sandbox Code Playgroud)

你怎么看,这个方法,把响应放在变量中,并用正则表达式解析字符串确定,然后我把它添加到div,就像这样

<div [innerHTML]="response | safe"></div>
Run Code Online (Sandbox Code Playgroud)

好,我的页面显示.但是,脚本不起作用.它们存在于div标签中,但不执行.

我曾尝试过这样做,eval()但结果很糟糕

let scripts: string[] = restr.match(/\<scr[\s\S]*?ipt>/g);

            this.srcfield.nativeElement.innerHTML = '';

            scripts.forEach((value, index) …
Run Code Online (Sandbox Code Playgroud)

javascript http angular

5
推荐指数
2
解决办法
5983
查看次数

标签 统计

javascript ×2

angular ×1

http ×1

jquery ×1

onload ×1