从HTML文本动态加载JavaScript?

从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

我有一个模块化的单页html,它根据各种不重要的属性动态加载内容html。除了没有加载脚本外,下面的代码工作得很好。我在动态加载函数中有一个位置可以插入脚本,但找不到任何此类加载的示例。所有内容都假定src文件,但我知道您可以使用element.text执行以下操作,但不确定如何从html文本加载该文件

注意,我找到的所有引用都是通过.src加载的,而不是我需要的.text

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)