2011-11-03 78 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

我試過了,但它不起作用。我的意思是'