2011-12-01 44 views
0

的DOM我們允許用戶將他們的網頁上HTML噴吹到使用腳本標記

<script language="javascript" src="oursite/script.php"></script> 

標籤則應該從嵌入我們的網站上的某些內容到他們的網站。目前script.php包含document.write(「從數據庫加載的一些內容」),但是有一些限制。

無論如何,我可以用jQuery實現同樣的事情嗎?我如何告訴jQuery將某段HTML代碼完全放在腳本標籤所在的位置? document.write()可以做到這一點,但我不知道如何使用jQuery來做到這一點。 (我們已經通過script.php提供了jquery js代碼給客戶端

+0

jQuery是一個JavaScript動力工具,可以在適當的時候使用。你希望通過發現「我可以用jQuery實現同樣的事情」獲得什麼? –

+0

http://stackoverflow.com/questions/761148/jquery-document-ready-and-document-write可能的重複 – Pateman

回答

2

你不需要jQuery去做document.write()只要它是內聯執行的(即不在事件處理程序中,例如$(document).ready() ),它會工作只要確保你逃避結束腳本標籤(是這樣的:<\/script>),使HTML解析器不會誤以爲實際結束腳本標籤:

<script type="text/javascript"> 
    document.write("<script language=\"javascript\" " + 
     "src=\"oursite/script.php\"><\/script>"); 
</script> 

或者,你可以使用DOM操作添加腳本如果您想在頁面加載後添加腳本,這是您唯一的選擇,要將它放置在調用它的腳本標記之後,請給腳本標記一個id並使用$("#myScript").after("<script>")

<script type="text/javascript" id="myScript"> 
    $(function() { 
     $("#myScript").after("<script>").attr({ 
      language: "javascript", 
      src: "oursite/script.php" 
     }); 
    }); 
</script> 
0

你不一定需要使用jQuery,但你可以。

這裏的基本問題是在頁面加載時查找腳本節點。

您可以給它一個id,並希望其他用戶的頁面上沒有重複的ID。

但是,如果你知道腳本將被評估爲加載頁面時,你也可以這樣做:

(function(){ // this is just so you don't run into name collisions with the user's page 
// Get all script elements 
var scripts = document.getElementsByTagName('script'); 
// we know the last script element will be *this* one 
var script = scripts[scripts.length-1]; 
var newp = document.createElement('p'); 
newp.textContent = 'inserted paragraph'; 
// now insert our new nodes after the current script 
script.parentNode.insertBefore(newp, script.nextSibling); 
})(); 

你當然可以用var $script = $('script:last');使用jQuery爲好,但如果你不需要它用於其他任何你可以通過不使用它來節省一些加載時間。