Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我需要使用document.write而不是DOM操作方法?_Javascript_Ads_Document.write - Fatal编程技术网

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.