Javascript添加<script>在页面加载后标记
Javascript adding <script> tag after page loads
这里有个小问题。基本上,我试图在页面加载后添加一个脚本标签。
这就是我正在做的:
index . php:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
function getad()
{
$.post('assets/getad.php', "ad", function(response) {
response = response.replace('document.write','document.getElementById("ad").innerHTML = ');
eval(response);
console.log(response);
});
}
getad();
</script>
<div id="ad"></div>
</body>
</html>
getad.php:
<?php
echo file_get_contents("http://ads1.qadabra.com/t?id=a823aca3-9e3c-4ddd-a0cc-14b497cad85b&size=300x250");
?>
你可以在这里找到一个演示:http://dev.cj.gy/game/
正如你所看到的,#addiv确实被正确的脚本标签填充,但它实际上并没有运行,如果我在页面加载时编辑页面以包含脚本标签,它就会运行。
是的,<script>
标记在作为主文档的一部分被解析时导致执行;它们不会在写入innerHTML
时执行。
您可以使用调用createElement('script')
的DOM方法在初始解析之外创建执行脚本元素,设置其src
/内容并将其添加到文档中。这就是jQuery的getScript
所做的。
然而,它不会做你太多的好,因为下一个脚本,ads1.qadabra.com
是document.write
到页面,也自己调用document.write
。
您可以在客户端绕过这两个调用(即没有getad.php
),通过将您自己的自定义函数分配给document.write
,而不是写入加载页面,尝试提取传递给它的脚本标记的源,并将其加载到dom创建的脚本元素中。
但是一般来说,这些脚本被设计为在文档加载时同步工作;你所做的任何试图强迫它们以一种它们不希望的方式运行的事情都可能是脆弱的,并且在AD网络改变任何东西时停止工作。
如果你想加载第三方广告而不暂停父文档的加载,我建议把它放在iframe
相关文章:
- 在iframe中加载url并添加一个类
- JS触发器值检查在文档加载后添加到页面的元素在加载时更改AND
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- Angular:在页面加载后添加类
- 当CDN加载失败时,为字体添加一个本地CSS回退
- HTML图像未加载(自动添加内联css和属性)
- 清理在加载 Ajax 内容时添加的 CSS
- 为 HTML5 游戏添加游戏加载程序
- 如何在地图加载后向谷歌地图添加标记
- 在 <对象> 标记中加载 SVG 时,将侦听器添加到 SVG 卸载事件
- 如何将“跨源”标记添加到动态加载的脚本中
- 是否可以在不将其添加到DOM的情况下预加载和缓存视频文件
- 如何将回调添加到 gstatic 加载器.js谷歌图表库
- 添加支持异步重新加载的 Web 图层
- 在加载状态之前,我需要在angular js中为每个状态添加角色
- 将加载添加到 iFrame
- 如何在加载/添加新帖子到提要列表时隐藏帖子元素
- 加载添加了javascript的网站
- 如何加载添加了jQuery的页面
- jquery点击,页面加载添加类