2011-04-08 6 views
2

Я использую тег <script> на моей HTML-странице, которая содержит фрагмент HTML. Я хочу получить этот фрагмент и вставить его на страницу. Расположение фрагмента находится на том же сервере, что и сама страница, поэтому проблем с межсайтовой связью не существует.Как получить содержимое скрипта, отличного от javascript?

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

(кстати, я указал тип сценария, как текст/х-Jquery-Tmpl, как я пытался использовать шаблоны JQuery, чтобы получить доступ к содержимому сценария, даже если это просто 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 ignoramus и вам нужна пушистая защита jQuery в любое время.

+0

Просто для любопытства, почему вы вставляете html в тег скрипта, а не, например, на дисплей нет div? – Andre

+0

Мне просто интересно, почему вы это сделаете? Не было бы проще просто поместить его в html-файл и получить этот файл или элемент на странице? Любопытно, зачем вы это делаете, вот и все ... –

+0

@Andre - он находится в другом файле, поэтому не встроен в страницу. – mackenir

ответ

3

Вы должны использовать «.html()„:

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

Лично я считаю, что это глупо, и что“.text()» должен работать, но я зарегистрировал ошибку по этому вопросу и JQuery люди отказались это исправить.

Кроме того, значение атрибута «тип» на самом деле не имеет большого значения, но вам определенно нужно установить его на что-то, а не (конечно) фактический тип JavaScript.

+0

Не будут работать родные свойства 'innerText' или' textContent'? – Tomalak

+1

@Tomalak "innerText" не работает в IE по какой-либо причине на '

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 вызова, сладкий и просто загружает содержимое из поддавки адрес в данный элемент.

+0

Может быть .load это простое решение. Я надеялся, что поместить его в ярлык, чтобы он был загружен «раньше» каким-то образом, возможно, сократить внешний вид страницы, «построенной». Но это чисто спекуляция с моей стороны. – mackenir

+0

Хм, хорошо. Я попробовал это, и нет никакого визуального воздействия, которое я могу видеть, вставляя фрагмент с использованием нагрузки. Это научит меня размышлять. – mackenir

Смежные вопросы