Javascript 为什么我需要使用document.write而不是DOM操作方法?
我正在尝试一项新的广告服务,据我所知,他们没有提供加载广告的功能界面。我们希望根据用户的屏幕大小显示不同的广告大小,该服务要求您为每个大小加载不同的Javascript 为什么我需要使用document.write而不是DOM操作方法?,javascript,ads,document.write,Javascript,Ads,Document.write,我正在尝试一项新的广告服务,据我所知,他们没有提供加载广告的功能界面。我们希望根据用户的屏幕大小显示不同的广告大小,该服务要求您为每个大小加载不同的.jsURL 我最初试着写: <script type="text/javascript"><!-- var dochead = document.getElementsByTagName('head')[0]; var newscript = document.createElement('script');
.js
URL
我最初试着写:
<script type="text/javascript"><!--
var dochead = document.getElementsByTagName('head')[0];
var newscript = document.createElement('script');
newscript.type = "text/javascript";
newscript.src = '//ads-by.madadsmedia.com/tags/22430/9194/async/' + (screen.width >= 1360 ? '160' : '120') + 'x600.js';
dochead.appendChild(newscript);
//-->
</script>
但我只有一页空白。我查看了Chrome开发者工具,它似乎正确加载了他们的脚本。他们的脚本从Google加载其他脚本,它们也出现在DOM中。但是没有广告图片
当我将脚本更改为:
<script language="JavaScript" type="text/javascript">
var prot = document.location.protocol;
var adwidth = (screen.width >= 1360 ? '160' : '120');
document.write('<script language="JavaScript" type="text/javascript"'); document.write('src="'+prot+'//ads-by.madadsmedia.com/tags/22430/9194/async/'+adwidth+'x600.js">'); document.write('<\/scr' + 'ipt>');
</script>
var prot=document.location.protocol;
var adwidth=(screen.width>=1360?'160':'120');
文件。写(“”);文件。写(“”);
它工作正常。我一般不喜欢使用
文档。写,我想知道为什么在这种情况下需要它?广告服务的脚本广泛使用了文档。write
,这就是原因吗?如果文档正在加载,它的就绪状态是交互式的,但body元素尚未完全解析。不能向尚未加载的元素添加子元素。这将导致错误,脚本将停止
dochead.appendChild(newscript)
快速修复方法是使用body.onload事件运行函数。将脚本移到页面底部可能会起作用,但在Internet Explorer和行为不端的浏览器中,我不认为这是可靠的。< P>因为它们使用的是“代码>文档”(Wrror)(<代码> >:
:
if(!window.ActiveXObject){
文件。填写(“”);
//等等。
如果document.write()
未在线运行并主动“打开”文档,则会对其中的内容造成冲击。因此,在加载后运行他们的脚本会用他们的内容覆盖您的内容。如果他们的脚本使用document.write
可能会导致页面变为空白,因为它会覆盖流
您可以覆盖文档。编写作为修复:(但我不会…)
脚本正在执行。我可以在其中设置一个断点,它会在断点处停止。您需要查看正在调用的脚本也在做什么。他们之所以要执行document.write,可能是因为行中的下一个脚本正在执行document.write。对于您的问题,一个非答案但可供选择的解决方案是创建一个并将使用document write的脚本放在myad.html中。document.write在解析过程中起作用,解析后追加child,document.write无法在加载文档后添加材料。很抱歉这么晚才回答,但我想应该注意到,您在第1行有一个Javascript语法错误。我们不再使用广告服务,所以这是没有意义的。无论如何,谢谢。不过,我已经看过我们当前的广告页面,它们的脚本是相似的。它们有
if (!window.ActiveXObject){
document.write("<div style=\"text-align: center; margin: 0px auto; width:160px; height:600px; position:relative;\">");
// etc.