0

我正在尝试使用 jQuery 将脚本动态添加到我的项目中。脚本已成功添加到head标签中,但标签中未呈现内容body

这是我的代码:

  <script type="text/javascript">
    window.onload = function() {
        var s = document.createElement("script");
        s.type = "text/javascript";
        s.src = "https://form.jotform.com/jsform/81003857231348";
        $("head").append(s);
    }
  </script>

但是,如果我直接添加,脚本会成功加载:
<script type="text/javascript" src="https://form.jotform.com/jsform/81003857231348"></script>

https://jsfiddle.net/xpvt214o/98587/

我错过了什么吗?

4

3 回答 3

2

我找到了解决方案,

首先你不能从外部加载的脚本中写任何东西来记录,

无法在“文档”上执行“写入”:除非显式打开,否则无法从异步加载的外部脚本写入文档

有两种方法可以解决这个问题。

1)。

您正在将Iframe创建 为 html 内容并将其写入文档

document.write(htmlCode)

上面为动态加载内容创建问题。

而不是你的代码尝试类似下面的东西。

var htmlCode = document.createElement("iframe");
 htmlCode.setAttribute("title", title.replace(/[\\"']/g,'\\$&').replace(/&amp;/g,'&'));
 htmlCode.setAttribute("src","");
 htmlCode.setAttribute("allowtransparency","true");
 htmlCode.setAttribute("allow","geolocation; microphone; camera");
 htmlCode.setAttribute("allowfullscreen","true");
 htmlCode.setAttribute("name",this.formId);
 htmlCode.setAttribute("id",this.iframeDomId);

 document.body.appendChild(htmlCode);

并在您的 html 中添加以下 Js 代码

<script type="text/javascript">
   var s = document.createElement("script");
   s.type = "text/javascript";
    s.src = "https://form.jotform.com/jsform/81003857231348";
   document.getElementsByTagName("head")[0].appendChild(s);
</script>

2)。

代替

document.write(htmlCode)

尝试

document.body.innerHTML=htmlCode

如果您仍然遇到任何问题,请告诉我。

于 2018-04-11T13:56:17.427 回答
0

您可以使用 jQuerys getScript()加载和执行脚本。它不需要在 DOM 中就可以访问您的元素。

$.getScript ("test.js", function (){

    alert ("Running test.js");

});
于 2018-04-11T12:54:47.263 回答
0

尝试使用

window.onload = function() {
   //your script declaration here
}

代替jquery ready()

于 2018-04-11T12:41:28.827 回答