2011-03-02 36 views
8

我可能會問得太多,但我試圖在ie8中使用html5元素獲取jQuery模板。我使用head.js,所以這是註冊html5元素,我也試過html5shiv,但沒有運氣。頁面中還有其他html5元素可以正常工作,但如果我在模板中使用html5元素,jquery模板系統將不會返回任何內容。ie8中的html5元素的jQuery模板

這裏是我的模板之一的例子:

<aside> 
    <script id="sidebar-template" type="text/x-jquery-tmpl"> 
     <section> 
      <header>${name}</header> 
      <section> 
       {{each links}} 
       <a href="${link}" class="${icon}">${name}</a> 
       {{/each}} 
      </section> 
     </section> 
    </script> 
</aside> 

如果我改變HTML5元素的div和東西的模板在IE8的作品。我要指出,這個模板中的所有其他瀏覽器上運行,沒有大驚喜那裏......

我放在一起的jsfiddle證明我的模板:http://jsfiddle.net/keegan3d/E6EbG/1/

反正有獲得IE8的工作,這些HTML5元素?

回答

0

雖然不是一個真正的答案我可以確認我有類似的問題。在某些情況下,內容拒絕呈現,在其他情況下,針對html5元素的樣式拒絕應用。將新的html5元素更改爲div可以使我按預期工作。

+0

是的,這是我來過的結論。我把所有東西都改成了div,這樣我才能完成這個項目。 ie8倒計時在哪裏? http://ie6countdown.com/大聲笑。 – keegan3d 2011-03-05 04:04:38

2

我自己也遇到過這個問題。當使用由模板函數返回的jQuery對象作爲.html的輸入時,問題發生在使用html 5元素的IE8中。例如:

$("#my_container").html($.tmpl("myTemplate", { items: items })); 

嘗試一些事情後,我發現了以下解決方法:

var htmlContent = $.tmpl("myTemplate", { items: items }).html(); 
//assuming we have one outer element, which is a div 
htmlContent = "<div>" + htmlContent + "</div>"; 
$("#my_container").html(htmlContent); 

我懷疑這是一個jQuery的錯誤,並沒有具體涉及到temlate引擎。

1

也許與您的具體問題無關,此線程似乎是相關的谷歌搜索結果,所以也許它可以幫助其他人也通過谷歌訪問。

...

我有同樣的問題 - 我有一個HTML文件(我爲我所有的模板集合使用,節省HTTP請求)包含我的各種腳本塊的所有模板。

爲了從這個批量文件中提取單個塊,我使用了.text()和.contents() - 並且IE8無法處理它。

事實證明,抓住內容的唯一可靠的方法是使用的.html() - 例如:

<script class="template-header" type="text/x-jQuery-tmpl"> 
    <div id="container-title" class="container"> 
     <div class="container-inner"> 
      <div class="box-headline app-nav"> 
       <div class="box-inner"> 
        <h1><a href="${prefs.urlShopHome}" class="app-nav">${text.name}</a></h1>  
       </div> 
      </div> 
     </div> 
    </div> 
</script> 

,這裏是jQuery的部分:

// ... 
"success": function(data, textStatus, jqXHR) { 
    var header = $(data).filter(function(){ return $(this).is('.template-header') }); 
    header.each(function() { 
     var html = $(this).html(); // do not use .text(), .contents() here 
     // ... 
    }); 
}); 

THX,奔納德爾 - 他做了測試: http://www.bennadel.com/blog/1829-Script-Tags-jQuery-And-Html-Text-And-Contents-.htm

+0

Thx,就像一個魅力! :) – 2013-07-16 14:24:11

-1

對於IE8,您需要使用HTML5 shiv。

我插入到你的Javascript:

document.createElement("aside"); 
document.createElement("section"); 
document.createElement("header"); 

結果在這裏: Updated jsFiddle

+0

我嘗試了HTML5 shiv,但是它在使用jQuery模板創建html5元素時無法使用。 – keegan3d 2011-05-05 22:25:14

2

嘿,這可能是有點晚了,但我碰到這個而來到我的應用程序做IE8測試.. 我在做類似的模板工作時,ie8並沒有在注入html時對其進行設計。

退房http://jdbartlett.com/innershiv/

乾杯

+0

熱狗,這看起來很棒!我會試一試。 – keegan3d 2011-08-26 22:09:56