Javascript 如何插入脚本标记并通过src执行响应?
我有一个script标记,它通过src调用远程javascript片段,并将其写入页面,从而在过程中呈现一个横幅 我正在寻找一种调用脚本或通过javascript插入脚本的方法。现在看起来是这样的: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;
<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(“”);
我想这样做,这样我就可以在特定时刻根据预定义的断点切换横幅。你们会怎么做?有什么想法吗
更新:我对输出没有任何控制权。这是一家外部旗帜供应商。我认为这是不可能的?有几种方法可以做到这一点:
banner\u load
函数有几种方法可以做到这一点:
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的情况。谢谢你的回答!