我有一个脚本标记,它通过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>
这种作品。它插入脚本标记,并调用远程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>");
我想这样做,所以我可以根据预先定义的断点在特定时刻切换横幅。你们怎么会这样做?有什么想法吗?
更新:我对输出没有任何控制权。它是一个外部横幅供应商。我认为这是不可能的?
答案 0 :(得分:1)
您无法动态加载使用document.write()
的javascript并获得所需的结果。
动态加载的javascript在加载DOM后运行。在加载DOM后使用document.write()
时,它会清除整个文档并启动一个新的空文档。因此,它不会做你想要的。
如果要动态加载Javascript,则需要使用DOM操作(例如document.createElement()
和elem.appendChild()
)将横幅插入现有DOM而不使用document.write()
。 document.write()
仅对此类问题有用,只需内联顺序加载的javascript内联或标记中的<script>
标记(不是通过动态加载的javascript)。
答案 1 :(得分:0)
有几种方法可以做到这一点:
您可以返回HTML代码段,然后使用appendChild编写横幅,而不是返回document.write。通常使用document.write是一个糟糕的JavaScript实践。
如果您必须使用document.write,那么不要插入脚本标记网址,而是将网址的响应直接插入您的banner_load
函数。