2011-07-10 48 views
5

忽略腳本標籤我的頁面有一個標籤:具有type =「text/html的」和src =「...」加載,但通過jQuery的

 
    <script id='header' src='/Templates/Shared/Header.tmpl.html' type='text/html'></script> 

螢火告訴我,火狐5請求該資源。在HTML選項卡上,我可以導航到腳本元素並查看它包含/Template/Shared/Header.tmpl.html的內容。

但是,jQuery堅持腳本標籤是空的。 $('#header')。html()返回一個空字符串。我不明白爲什麼。

是的,我可以用$ .get()加載文件並使用$('#header')。html(data)來設置內容。然後我可以像我所期望的那樣使用它。這顯然產生了第二個要求,我想避免這種要求。

+0

我不知道這是jQuery是嚴格的。您是否嘗試過使用.text()而不是.html()?我不確定它會起作用,因爲我不知道腳本標記實際上是DOM的一部分。我認爲元數據插件可以訪問腳本標籤內的信息,但我沒有親自使用它。 http://plugins.jquery.com/project/metadata –

+0

.text()或.html()在這種情況下沒有任何區別,但是您關於不在DOM中的想法似乎有效。沒有任何外部腳本具有內容。我現在正在查看元數據插件。謝謝! –

+0

發現了一個類似的問題,沒有很好的答案:http://stackoverflow.com/questions/148441/how-can-i-get-the-content-of-the-file-specified-as-the-src-of -a-script-tag –

回答

5

我知道這是舊的,但答案很簡單。腳本標記根本不包含任何文本或HTML。

<script id='...' src='...' type='...'></script>

有標籤內沒有元素或文本。該腳本將被請求並加載到內存中(如果腳本類型具有處理程序),但實際文本本身不會被插入到DOM中。

+0

是否存在該屬性dom元素,您可以訪問請求的結果存儲位置?像'document.getElementById(「myHtmlScript」)。contents'? –

+0

自從我深入研究DOM apis以來,這已經有一段時間了。你想達到什麼目的?傳統上講,如果你想加載一些其他的uri資源作爲文本輸入到變量中,你可以使用ajax或jsonp(基本上只是加載一個腳本,然後執行並向文檔添加文本)。你是否想要完成某些事情? –

+0

它只是非常有意義的,如果** A **是真的,並且** B **是真的,** A + B **也是真的,** A **是'

1

這是一個老問題,但仍然存在於Firefox中。我使用它的解決方法:

function getHtml(selector) { 
    var $element = $(selector); 
    var html = $element.html(); 

    if (!html) { 
    // copy all the children elements to a dummy DIV, which, unlike the SCRIPT have no problem providing the html in Firefox 
    html= $('<div />').append($element.children().clone()).html(); 
    } 
    return html; 
}