document.write 在已加载和关闭的网站上
document.write on already loaded and closed website
我有一个显示新闻文章的网站。
现在我已经为文章实现了 ajax 重新加载,所以我可以
在不重新加载整个页面的情况下从一个切换到另一个。
(就像在新闻应用中一样)
每篇文章都有一个广告框。这个盒子里装满了一个广告,用 document.write 放在那里。 (OpenX)
当我现在重新加载一个文章时,盒子的内容不能写在那里,因为我的文档已经关闭,新的文章只加载了 jQuery 和 AJAX。因此,当我重新加载文章时,document.write 中的内容无法写入框中,而只是放在我的网站下面,看起来像某种错误代码。
现在我的问题是。我怎样才能把内容放进盒子里?是否可以打开一个已关闭的文档并将其写在那里,或者我是否需要用例如 jQuery append();?
替换所有 document.write 行
我已经尝试用 jQuery append(); 替换一些部分;
但是我也遇到了一些问题,比如这个工作正常:
document.write ("<td style='width:100px;'>"); //old
jQuery("#werb1").append("<td style='width:100px;'>"); //new
但是这个根本不起作用:
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u); //old
jQuery("#werb1").append("<scr"+"ipt type='text/javascript' src='"+m3_u) //new
m3_u 是一个 URL 保存在像 https://ad.domain.openx/www/delivery/ajs.php
这样的变量中
您不能传递给已经呈现的 table。您需要重新渲染整个 table 并关闭脚本标签
如果您在网站上使用动态内容,您可以使用 ANGULARJS or ReactJS or Meteor
这里有全套工具,可以真正帮助您构建这样的 webapp。
但是 atm 您需要删除 table,在您的变量中构建整个 HTML 并将其放在网站上。浏览器,即使您正确放置该 TD,也会将 td 或 tr 推到 table.
之外
JavaScript document.write
仅在页面加载时执行。因此,如果您使用 Ajax,则不能在文档加载后使用 document.write
,否则它将覆盖页面上的所有现有内容。
将 Ajax 与 document.write
一起使用最初不是一个好主意,因为广告不会在 Ajax 请求时重新加载。
如果可能的话,最好的方法是使用 Ajax 而不是 document.write
来投放广告。由于您已经有了可用的 Ajax 代码,因此为广告实现相同的功能应该不难。
但如果这不是一个选项,那么您可以使用 jQuery append()
。例如,如果您的旧代码如下所示:
<div>
<script>
document.write("<h1> Heading </h1>");
</script>
</div>
然后你可以替换为:
$("div").append("<h1> Heading </h1>");
两者都会产生相同的结果:
<div>
<h1> Heading </h1>
</div>
最后,如果您了解服务器端脚本,那么您可以将其与 Ajax 结合使用并创建交互式现代网站。
我有一个显示新闻文章的网站。
现在我已经为文章实现了 ajax 重新加载,所以我可以 在不重新加载整个页面的情况下从一个切换到另一个。 (就像在新闻应用中一样)
每篇文章都有一个广告框。这个盒子里装满了一个广告,用 document.write 放在那里。 (OpenX)
当我现在重新加载一个文章时,盒子的内容不能写在那里,因为我的文档已经关闭,新的文章只加载了 jQuery 和 AJAX。因此,当我重新加载文章时,document.write 中的内容无法写入框中,而只是放在我的网站下面,看起来像某种错误代码。
现在我的问题是。我怎样才能把内容放进盒子里?是否可以打开一个已关闭的文档并将其写在那里,或者我是否需要用例如 jQuery append();?
替换所有 document.write 行我已经尝试用 jQuery append(); 替换一些部分; 但是我也遇到了一些问题,比如这个工作正常:
document.write ("<td style='width:100px;'>"); //old
jQuery("#werb1").append("<td style='width:100px;'>"); //new
但是这个根本不起作用:
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u); //old
jQuery("#werb1").append("<scr"+"ipt type='text/javascript' src='"+m3_u) //new
m3_u 是一个 URL 保存在像 https://ad.domain.openx/www/delivery/ajs.php
这样的变量中您不能传递给已经呈现的 table。您需要重新渲染整个 table 并关闭脚本标签
如果您在网站上使用动态内容,您可以使用 ANGULARJS or ReactJS or Meteor
这里有全套工具,可以真正帮助您构建这样的 webapp。
但是 atm 您需要删除 table,在您的变量中构建整个 HTML 并将其放在网站上。浏览器,即使您正确放置该 TD,也会将 td 或 tr 推到 table.
之外 JavaScript document.write
仅在页面加载时执行。因此,如果您使用 Ajax,则不能在文档加载后使用 document.write
,否则它将覆盖页面上的所有现有内容。
将 Ajax 与 document.write
一起使用最初不是一个好主意,因为广告不会在 Ajax 请求时重新加载。
如果可能的话,最好的方法是使用 Ajax 而不是 document.write
来投放广告。由于您已经有了可用的 Ajax 代码,因此为广告实现相同的功能应该不难。
但如果这不是一个选项,那么您可以使用 jQuery append()
。例如,如果您的旧代码如下所示:
<div>
<script>
document.write("<h1> Heading </h1>");
</script>
</div>
然后你可以替换为:
$("div").append("<h1> Heading </h1>");
两者都会产生相同的结果:
<div>
<h1> Heading </h1>
</div>
最后,如果您了解服务器端脚本,那么您可以将其与 Ajax 结合使用并创建交互式现代网站。