2012-11-14 37 views
3

我只是增加SnapEngage到客戶的網站與下面的代碼塊由SnapEngage提供:<script type =「text/javascript」>和</script>如何影響計時?

<script type="text/javascript"> 
document.write(unescape("%3Cscript src='//www.snapengage.com/snapabug.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
SnapABug.addButton("1ff63c0c-0bf1-43e2-b9ae-08de517f08dc","0","55%"); 
</script> 

我認爲這件事很奇怪有</script><script type="text/javascript">在中間,所以我就拿出來,但隨後的代碼停止工作。這是爲什麼?它們以某種方式影響時間嗎?

+0

等等,所以你完全刪除了腳本內容?你把它們放在''標籤中嗎? – Matt

+0

http://stackoverflow.com/questions/496646/how-does-the-location-of-a-script-tag-in-a-page-affect-a-javascript-function-tha?rq=可能的重複1 – Sean

+0

這很有趣,它突出了瀏覽器如何解析腳本。最好的猜測是,當你刪除分隔符時,瀏覽器首先解析容器腳本,然後嘗試調用SnapABug.addButton,然後處理document.write。這是一個猜測。 –

回答

5

第一個腳本將script標記放入HTML中,該標記加載snapabug.js並加載該資源的同步同步。因此執行下一個腳本,即SnapABug.addButton(...),將暫停,直到資源被下載並解釋爲止。這樣,SnapABug對象在以下腳本中可見。

如果您將所有JavaScript代碼放在一個script標記中,它將作爲一個批處理執行。全局範圍內沒有SnapABug對象,因爲提供的腳本尚未下載。

+0

希望有人知道如何解釋這一點 –

相關問題