从HTML文本动态加载JavaScript?
我有一个模块化的单页html,它根据各种不重要的属性动态加载内容html。除了没有加载脚本外,下面的代码工作得很好。我在动态加载函数中有一个位置可以插入脚本,但找不到任何此类加载的示例。所有内容都假定src文件,但我知道您可以使用element.text执行以下操作,但不确定如何从html文本加载该文件 注意,我找到的所有引用都是通过.src加载的,而不是我需要的.text从HTML文本动态加载JavaScript?,javascript,dynamic,single-page-application,Javascript,Dynamic,Single Page Application,我有一个模块化的单页html,它根据各种不重要的属性动态加载内容html。除了没有加载脚本外,下面的代码工作得很好。我在动态加载函数中有一个位置可以插入脚本,但找不到任何此类加载的示例。所有内容都假定src文件,但我知道您可以使用element.text执行以下操作,但不确定如何从html文本加载该文件 注意,我找到的所有引用都是通过.src加载的,而不是我需要的.text function dynamicLoad(elem, sourceCode) { // load html
function dynamicLoad(elem, sourceCode) {
// load html not the issue
elem.innerHTML = sourceCode;
// load JS -- this is with solution ---
var doc = document.implementation.createHTMLDocument(); // Sandbox
doc.body.innerHTML = sourceCode; // Parse HTML properly
// --- This is the solution below, will load all scripts found
[].map.call(doc.getElementsByTagName('script'), function(el) {
var e = document.createElement('script');
e.text = el.textContent;
document.body.appendChild(e);
}
}
提到我对这个答案的评论,我不知道这是否真的是你想要的,但我希望这会有所帮助
var loadedScript=“警报('Eval正在工作!”)”;
函数evalScript(){
返回eval(loadedScript);
}
Eval脚本
答案在上面的内联代码中发布,但在这里:
// Insert JS
var doc = document.implementation.createHTMLDocument(); // Sandbox
doc.body.innerHTML = data; // Parse HTML properly
[].map.call(doc.getElementsByTagName('script'), function(el) {
var e = document.createElement('script');
e.text = el.textContent;
document.body.appendChild(e);
});
这回答了你的问题吗?是否要执行已加载的脚本标记?然后可以使用
eval
函数来执行javascriptinside@AdnaneAr这会加载脚本吗?使用上述代码,这是eval(数据)吗?这会产生一个错误“VM:Uncaught(in promise)SyntaxError:Unexpected token”,您可以尝试将js脚本获取为字符串,并像eval(jsString)