首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从javascript脚本重定向document.write

问从javascript脚本重定向document.write
EN

Stack Overflow用户
提问于 2009-04-29 07:28:06
回答 4查看 4.7K关注 0票数 2

我们希望在我们的网站上投放广告,但我们正在与之谈判的广告服务器在为我们提供足够快的广告方面存在问题。

我看到的问题是,我们应该包括一个<script src="http://advertiserurl/myadvertkey"></script>,我们想要在其中显示广告,然后它将下载一个脚本,并使用document.write插入一些html。

问题是,对广告商网站的调用速度很慢,返回的代码会下载另一个文件(广告),这意味着在我们等待请求得到满足时,渲染页面的速度会变慢。

有没有一种方法可以在页面加载后获取document.write调用的输出并将其写入?

基本上我想这样做:

代码语言:javascript
复制
<html>
<body>

    <script>
function onLoad() {
    var urlToGetContentFrom = 'http://advertiserurl/myadvertkey';

    //  download js from above url somehow

    var advertHtml = // do something awesome to interprete document.write output
    $('someElement').innerHTML = advertHtml;
}
    </script>

</body>
</html>

或者任何类似的东西,可以让我获得该文件的输出并显示它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-04-29 07:35:41

要将主页加载与广告加载分离,您可以将广告放在iframe中自己的页面中,或者类似地,使用AJAX下载脚本文件,并在它关闭时执行它。如果前者由于引用URI或其他原因而不能满足需求,那么后者可以为您提供一定的灵活性:您可以使用字符串替换将"document.write“重写为其他内容,或者像"document.write = custom_function;”这样临时替换它。

票数 3
EN

Stack Overflow用户

发布于 2009-04-29 07:39:41

如果我理解正确的话,您希望将document.write捕获到变量,而不是将其写入文档。你实际上可以这样做:

代码语言:javascript
复制
var advertHtml = '';
var oldWrite = document.write;

document.write = function(str)
{
    advertHtml += str;
}

// Ad code here

// Put back the old function
document.write = oldWrite;

// Later...
...innerHTML = advertHtml;

不过,您仍然可以加载脚本文件。

票数 6
EN

Stack Overflow用户

发布于 2009-11-23 05:50:08

你可能会对the Javascript library I developed感兴趣,它允许在window.onload之后使用document.write加载第三方脚本。在内部,该库覆盖document.write,动态追加DOM元素,运行任何可能使用document.write的脚本。

我已经设置了a demo, in which I load 3 Google Ads, an Amazon widget as well as Google Analytics dynamically。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/801258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档