首页 > 解决方案 > 从 AJAX 请求加载时未执行的 Javascript 文件

问题描述

我正在通过 AJAX 加载页面,然后将加载的内容粘贴到 IFRAME 中。我这样做是因为我使用的是在加载时修改数据的授权令牌。但是我遇到了一个奇怪的情况,即没有加载 Javascript 文件。

让我们一天的页面是:

索引.html

<html>
  <body>
      Hello World
  </body>

   <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js">

  <script>
     moment().format('MMMM Do YYYY, h:mm:ss a')
  </script>

</html>

现在,如果我运行通常通过浏览器加载的类似内容,它就可以工作了!但是让我们通过 AJAX 加载它并将其输入到 IFrame 中:

let xhr = new XMLHttpRequest();
let token = 'someToken';

                xhr.open('GET', 'index.html');
                xhr.onreadystatechange = function() {
                    if (this.readyState === this.DONE) {
                        if (this.status === 200) {
                            // this.response is a Blob, because we set responseType above
                            var data_url = URL.createObjectURL(this.response);
                            let ifrm = document.createElement('iframe');
                            ifrm.setAttribute("src", data_url);

                            ifrm.style.width = "100%";

                            
                            let someElement = document.getElementByID('someID')

                            someElement.appendChild(ifrm);

                        } 
                    }
                };

                xhr.responseType = 'blob';
                xhr.setRequestHeader('Authorization', token);
                xhr.send();

我会收到诸如“时刻未定义”之类的错误。在我的实际站点中,我有其他 javascript 文件,但它们都没有加载。为什么通过 AJX 请求加载页面时会发生这种情况?

标签: javascriptiframe

解决方案


推荐阅读