2011-04-08 24 views
2

我在包含HTML片段的HTML頁面中包含一個<script>標記。我想獲取這個片段並將其插入到頁面中。片段的位置與頁面本身位於同一臺服務器上,因此不存在跨站點問題。如何獲取非javascript腳本的內容?

<script id="frag" src="/frag.html" type="text/x-jquery-tmpl"></script> 

(順便說一句,我指定的腳本,因爲我一直在嘗試使用jQuery模板訪問腳本內容文本/ X-jQuery的TMPL的類型,即使它只是一個HTML文本)。我相信「類型」的價值不是什麼大不了的事。

有些事情我已經試過:

// Try inserting frag.html into div hdr 
// this attempt, using jQuery templates, doesn't work 
$('#frag').tmpl().appendTo('#hdr'); 

// This is an empty string 
var contents = $('#frag').text(); 

對不起,所有的jQuery的,我有一個如何嘗試這個沒有它甚至更少的想法。我是一個javascript無知的人,並且始終需要對jQuery的蓬鬆保護。

+0

只是爲了好奇,爲什麼要在腳本標記中插入html,而不是顯示非空格? – Andre 2011-04-08 17:31:29

+0

我只是想知道爲什麼你會這樣做?將它放在HTML文件中並檢索頁面上的文件或元素會不會更容易?好奇你爲什麼要這麼做,這就是全部... – 2011-04-08 17:33:11

+0

@Andre - 它在不同的文件中,因此沒有嵌入到頁面中。 – mackenir 2011-04-08 17:37:25

回答

3

你必須使用「的.html()‘:

var contents = $('#frag').html(); 

我個人認爲這是愚蠢的,而且’的.text()」應該工作,但是我登錄的問題,jQuery的一個bug人們拒絕修復它。

另外,「類型」屬性的值其實不是什麼大不了的事,但你絕對需要將其設置爲東西,並沒有(當然)實際的JavaScript類型。

+0

本地'innerText'或'textContent'屬性是否工作? – Tomalak 2011-04-08 17:38:22

+1

@Tomalak在'

2

或更充分:

$(document).ready(function(){ 

    $('#hdr').append($('#frag').html()); 

}); 

或無腳本標記在所有...

<div id='hdr'> 
     //content 
     <div id='hdr_add'></div> 
    </div> 
... 

    $(document).ready(function(){ 
     $('#hdr_add').load('frag.html'); 
    }); 

.load()是一條捷徑AJAX調用,甜,只是加載的內容從給定的URL進入給定元素。

+0

可能.load是簡單的解決方案。我希望將它放在標籤中可以確保它以某種方式「早點」下載,或許可以減少「構建」頁面的外觀。但這是我的純粹推測。 – mackenir 2011-04-08 17:41:18

+0

嗯,好的。我試過了,我沒有看到使用加載插入片段的視覺效果。這會教我猜測。 – mackenir 2011-04-08 17:45:03

相關問題