当某个特定事件发生时,我会倾听 - 我想使用调用我的Google广告代码的JavaScript来填充div'divDynamicAdvert`。
非常感谢“tenbits”向我展示我需要附加一个这样的脚本节点:
function myEventHandler(evt) //called when event is caught
{
var script = document.createElement('script');
script.textContent = 'alert(1)';
document.getElementById('divDynamicAdvert').appendChild(script);
}
这很有用,但我需要插入Google广告Javascript:
来代替提醒<script type="text/javascript"><!--
google_ad_client = "ca-pub-3286208413631803";
/* Standard MPU */
google_ad_slot = "8630273973";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
我试过了:
var script = document.createElement('script');
script.textContent = 'google_ad_client = 'ca-pub-3286208413631803'; google_ad_slot = '8630273973'; google_ad_width = 300; google_ad_height = 250;';
document.getElementById('divDynamicAdvert').appendChild(script);
var script = document.createElement('script src="http://pagead2.googlesyndication.com/pagead/show_ads.js"');
document.getElementById('divDynamicAdvert').appendChild(script);
我也试过逃避斜线,但没有运气......你能帮忙吗?
答案 0 :(得分:1)
正如@slebetman所说,innerHTML
不会工作。如果您尝试通过DOM评估脚本,而不是eval(code)
等,请使用SCRIPT
节点执行此操作:
var script = document.createElement('script');
script.textContent = 'alert(1)';
document.getElementById('divDynamicAdvert').appendChild(script);
// actually it doesnt matter where you append it
修改强>:
在任何情况下创建一个SCRIPT NODE,然后使用它进行操作 - 向其中添加脚本内容 OR 如果引用外部源,则添加src属性
var script;
// content
script = document.createElement('script')
script.textContent = 'alert(1)'
document.body.appendChild(script);
// google api source
script = document.createElement('script');
script.src = 'ANY_URL';
// -> in this case, same as script.setAttribute('src', 'ANY_URL');
document.body.appendChild(script);
如果有其他问题,请随时在评论中提问。