【问题标题】:How to run received JavaScript from the client side(html, js)?如何运行从客户端接收到的 JavaScript(html、js)?
【发布时间】:2023-03-15 19:04:01
【问题描述】:

我正在使用基于 JS 承诺的库 (axios) 从后端获取响应,该响应返回一个完整的 JS 文件。收到此文件后,如何在当前页面中实际使用它?

这是代码:

axios.get('/foobar')
     .then(jsFile => {
          //use jsFile on current webpage       
      })

我已经阅读了一些使用eval() 的答案,但我宁愿避免使用这种方法。有人知道如何进行吗?

【问题讨论】:

  • jsFile 是脚本文本?
  • jsFile的内容是什么?
  • @gurvinder372 是的,当我使用 console.log 时,我看到控制台打印了 js 文件中的所有文本
  • 一开始你为什么用 axios 而不是<script>
  • eval 有什么问题,通过其他机制注入脚本并没有错?

标签: javascript promise axios es6-promise


【解决方案1】:

制作一个script标签,内容为jsFile

function addScriptToSession( jsFile )
{
    var s = document.createElement('script');
    s.type = 'text/javascript';
    try {
      s.appendChild(document.createTextNode(jsFile));
      document.body.appendChild(s);
    } catch (e) {
      s.text = jsFile;
      document.body.appendChild(s);
    }
}

把它当做

  axios.get('/foobar')
 .then(jsFile => {
      addScriptToSession(jsFile)     
  })

【讨论】:

  • 很酷,但这与eval..有何不同?
  • @Redu with eval 你不能正确使用调试器。每次调用 eval() 都会产生一个新的 JS 解释器实例。 stackoverflow.com/questions/86513/…
猜你喜欢
  • 2021-01-03
  • 2012-11-20
  • 2015-02-08
  • 2015-12-15
  • 2022-01-26
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
相关资源
最近更新 更多