2011-11-03 84 views
1

可能重复:
JavaScript - controlling the insertion point for document.write延迟文件撰写

我不想耽误document.write如果块与document.write不是在浏览器的视口。 我试图使它加载窗口后,但document.write全部内容:(

$(function(){ 
    document.write('bla') 
)} 

取代另外,在此document.write我有脚本的广告,并在块添加时必须使用。

是它可能吗?

UPD:我有代码whith document.write,它推入文档<script>。因此,由于此代码,我的页面加载非常缓慢,我只想在dom准备好或用户滚动到块时加载此脚本我的广告放在哪里

+1

y document.write? – Kris

+0

您能否重新说明您的问题?这是完全不清楚的:“我想延迟document.write,如果阻塞与document.write”什么?,“document.write替换洞内容”这是文件的目的... ... – RvdK

+1

'window.setTimeout(fun_name ,秒);'可以使用,但你的问题是抽象的。 – run

回答

3

document.write()将隐式调用document.open()这将清除您的页面(如果它已完成加载)。

您应该只在将页面加载时执行的地方使用它。

+0

in'document.write'我有从其他资源加载的脚本。有时候这个资源非常慢,所以这就是为什么我想延迟'document.write'并在页面加载后触发它 – rsboarder

+1

@rsboarder:你不能延迟'document.write',这是不可能的。也许你可以阻止浏览器,直到加载所有的资源,并防止文档被完全渲染。但更有可能的是,浏览器会在之前放弃JavaScript,并且用户会非常恼火。 –

0

我想你想要的是这样的事情,而不是文件撰写:

$('#MyDiv').html("My Text <strongn>My Bold Text</strong>"); 
+0

他在问广告。其中通常有几个外部脚本与document.write,你不能控制。 – gregers

0

这是非常困难的。 因为如果您不“写”元素,页面主体区域将不会有正确的大小,并且您将无法移动/滚动页面。 如果您可以在写入之前测量元素,则可以向页面主体添加相同的空间,然后可以获取滚动条。您还需要一些代码来检测滚动条位置并确定编写元素。

0

从您的代码中删除document.write。创建一个script DOM元素并将其附加到head

$(function(){ 
    var script = document.createElement('script'); 
    script.src = // Put the src of script here 
    script.type = "text/javascript"; 
    document.getElementsByTagName('head')[0].appendChild(script); 
)}; 
+0

我试过了,但它不起作用。我的意思是'