gpt4 book ai didi

javascript - Angular 2 ajax加载并执行脚本标签

转载 作者:行者123 更新时间:2023-12-03 05:13:32 25 4
gpt4 key购买 nike

我有一个问题。这是 AJAX 加载页面,以及该页面的脚本标记执行。

.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='/#");



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


this.srcfield.nativeElement.innerHTML = '';


scripts.forEach(value => {
var element = document.createElement('script');

var valstr = value.match(/"([^"]+)*"/g)[0]
.replace(/"|'([^"]+)*"|'/g, '')
.replace(/text\/javascript/g, '');

element.src = valstr;

this.srcfield.nativeElement.appendChild(element);
})

this.response = restr;


})

你怎么知道,response是服务器的应答,它只是文本提供的HTML页面。我在此页面上进行一些操作,并将其生成到当前用户页面,而无需重新加载。但是有些标签script不会加载,因为它不按顺序执行。我如何正确加载脚本标签

P.S 加载的页面是由YII2框架生成的

最佳答案

您可以使用回调

function addScript( src,callback) {
var script = document.createElement( 'script' );
script.setAttribute( 'src', src );
script.onload=callback;
document.body.appendChild( s );
}

关于javascript - Angular 2 ajax加载并执行脚本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41696761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com