Javascript 如何插入脚本标记并通过src执行响应?

Javascript 如何插入脚本标记并通过src执行响应?,javascript,javascript-events,Javascript,Javascript Events,我有一个script标记,它通过src调用远程javascript片段,并将其写入页面,从而在过程中呈现一个横幅 我正在寻找一种调用脚本或通过javascript插入脚本的方法。现在看起来是这样的: <div id="<?php print $banner_id; ?>" class="banner-responsive <?php print $breakpoints; ?>"> <script src="<?php print $url;

我有一个script标记,它通过src调用远程javascript片段,并将其写入页面,从而在过程中呈现一个横幅

我正在寻找一种调用脚本或通过javascript插入脚本的方法。现在看起来是这样的:

<div id="<?php print $banner_id; ?>" class="banner-responsive <?php print $breakpoints; ?>">
  <script src="<?php print $url; ?>"></script>
</div>
<div class="banner">
  <div id="<?php print $banner_id; ?>">
    <script type="text/javascript">
      function banner_load(){
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = '<?php print $url; ?>';
        var x = document.getElementById('<?php print $banner_id; ?>');
        x.parentNode.appendChild(s);
      }
      if (window.attachEvent)
        window.attachEvent('onload', banner_load);
      else
        window.addEventListener('load', banner_load, false);
    </script>
  </div>
</div>
”;
var x=document.getElementById(“”);
x、 parentNode.appendChild;
}
如果(窗口附件)
窗口。附件(“装载”,横幅/装载);
其他的
window.addEventListener('load',banner\u load,false);
这类工作。它插入脚本标记,并调用远程url。但它不像在示例1中那样执行收到的JS代码段,因此横幅不会出现。有没有办法让我随意执行脚本src

src响应可能是什么样子:

document.write("<a target='_blank' href='http://domain/?options'><img src='http://domain/whateever-930x180px.jpg' alt='Click here' /></a>");
document.write(“”);

我想这样做,这样我就可以在特定时刻根据预定义的断点切换横幅。你们会怎么做?有什么想法吗



更新:我对输出没有任何控制权。这是一家外部旗帜供应商。我认为这是不可能的?

有几种方法可以做到这一点:

  • 您可以返回HTML片段,然后使用appendChild编写横幅,而不是返回document.write。通常使用document.write是一种糟糕的javascript实践

  • 如果必须使用document.write,则不要插入脚本标记url,而是将url中的响应直接插入
    banner\u load
    函数


  • 有几种方法可以做到这一点:

  • 您可以返回HTML片段,然后使用appendChild编写横幅,而不是返回document.write。通常使用document.write是一种糟糕的javascript实践

  • 如果必须使用document.write,则不要插入脚本标记url,而是将url中的响应直接插入
    banner\u load
    函数


  • 您不能动态加载使用
    document.write()
    的javascript并获得所需的结果

    动态加载的javascript在加载DOM后运行。加载DOM后使用
    document.write()
    时,会清除整个文档并启动一个新的空文档。因此,它不会做你想做的事


    如果要动态加载Javascript,则需要使用DOM操作(例如
    document.createElement()
    elem.appendChild()
    )将横幅插入现有DOM,而不是使用
    document.write()
    document.write()
    仅在使用顺序加载的javascript内联或通过标记中的
    标记(而不是通过动态加载的javascript)内联完成时,才对此类问题有用。

    您无法动态加载使用
    document.write()
    的javascript并获得所需的结果

    动态加载的javascript在加载DOM后运行。加载DOM后使用
    document.write()
    时,会清除整个文档并启动一个新的空文档。因此,它不会做你想做的事


    如果要动态加载Javascript,则需要使用DOM操作(例如
    document.createElement()
    elem.appendChild()
    )将横幅插入现有DOM,而不是使用
    document.write()
    document.write()
    仅在使用顺序加载的javascript内联或通过标记中的
    标记(而不是通过动态加载的javascript)内联完成时,才对此类问题有用。

    忘了指出,我对输出没有控制权。我将更新问题以反映这一点。请您详细说明一下2。使用file_get_内容检索脚本服务器端,并将该响应直接打印到banner_load函数中。忘了指出,我对输出没有控制权。我将更新问题以反映这一点。请您详细说明一下2。使用file_get_内容检索脚本服务器端,并将响应直接打印到banner_load函数中。是的,我假设这就是问题所在。问题是,我无法控制响应,也无法使用ajax获取响应,因此只能使用现有的响应。看起来我必须和条幅供应商谈一谈。如果你不能控制脚本,那么你就不能动态插入它,除非你想把它放在一个iframe中,这样你就可以让
    document.write()
    在不干扰文档其余部分的情况下完成它的工作。考虑到网站,我真的希望避免我被迫使用iFrame的情况。谢谢你的回答!是的,我认为这就是问题所在。问题是,我无法控制响应,也无法使用ajax获取响应,因此只能使用现有的响应。看起来我必须和条幅供应商谈一谈。如果你不能控制脚本,那么你就不能动态插入它,除非你想把它放在一个iframe中,这样你就可以让
    document.write()
    在不干扰文档其余部分的情况下完成它的工作。考虑到网站,我真的希望避免我被迫使用iFrame的情况。谢谢你的回答!