gpt4 book ai didi

javascript - 为什么我需要使用 document.write 而不是 DOM 操作方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:24:58 24 4
gpt4 key购买 nike

我正在尝试一种新的广告服务,据我所知,他们没有提供加载广告的功能界面。我们希望根据用户的屏幕尺寸显示不同的广告尺寸,此服务要求您为每种尺寸加载不同的 .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>

它工作正常。我通常不喜欢使用 document.write,我想知道为什么在这种情况下需要它?广告服务的脚本大量使用了 document.write,这是为什么?

最佳答案

因为他们正在使用document.write():

http://ads-by.madadsmedia.com/tags/22430/9194/async/160x600.js :

if (!window.ActiveXObject){
document.write("<div style=\"text-align: center; margin: 0px auto; width:160px; height:600px; position:relative;\">");
// etc.

如果 document.write() 没有在线运行并主动“打开”文档,它会破坏那里的内容。因此,加载后运行他们的脚本会用他们的内容覆盖您的内容。

关于javascript - 为什么我需要使用 document.write 而不是 DOM 操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com