2011-10-26 22 views
0

我有一個頁面使用jQuery的$ .post()方法來獲取一些html,而html內部是一個標籤。<script> ajax響應中的標籤不被IE解析<= 8

我的代碼看起來是這樣的:

$.post('myUrl', 
    { someData : 'someData', moreData : 'moreData'}, 
    function(response){ 
     $('body').append(response); 
}); 

是否有一個原因,該腳本代碼將無法在IE < = 8解析?它在其他瀏覽器中解析得很好。我一直在網上搜索了幾個小時,似乎無法找到關於此問題的任何內容,所以我假設我忘記了一些事情,或者做錯了什麼?

編輯:

剛剛發現這個上關於HTML數據類型的AJAX請求的jQuery網站(http://api.jquery.com/jQuery.ajax/):

「返回HTML作爲純文本;在DOM插入時包含的腳本標籤進行評估。 「

關於一個相關的SO問題(Can't append <script> element):@Hendra給出的答案聲明這應該工作。這仍然讓我想起爲什麼這在IE7/8中不起作用。

回答

0

我發現了這個問題。

我的網站使用HTML5,從而爲插入元素到DOM非HTML5瀏覽器依賴於innershiv(http://jdbartlett.com/innershiv/)(對我來說這將是IE7/8)

我已經忘記了,我們有一個自動化的腳本它調用innershiv所有jQuery插入方法(.html(),.append()等)。

這對我來說是失敗的原因是innershiv繞過了jQuery的腳本評估。

解決的辦法是從調用innershiv的腳本中進行腳本評估。 JD Bartlett在這裏提供了更詳細的解釋:https://github.com/jdbartlett/innershiv/issues/4

1

使用DOM方法將<script>標記結果插入正在執行的標記中。只使用innerHTML(或使用它的某個框架)將不會導致腳本被執行。這可能是你的問題的原因。我建議分離HTML和JS,然後在JS部分運行eval

+0

謝謝。我按你的建議做了。我搜索了js並運行eval,並在IE中運行。但是,對於所有已經工作的其他瀏覽器,他們現在分析

  • 11. 使用php解析rss feed中的不尋常標籤。 (有標籤<dc:author>)
  • 12. <attribute>不能被解析爲的<bean>
  • 13. 解析jQuery的Ajax響應
  • 14. <audio>標籤應該放在<head>標籤中嗎?
  • 15. 解析AJAX響應中的JSON內容
  • 16. 解析iOS中的應用程序崩潰<8 in swift
  • 17. javascript:window.close();不關閉IE 8中的標籤
  • 18. <dl> - <dt> - <dd>標籤並排水平響應視圖
  • 19. PHP SimpleXML不解析<
  • 20. 意外的<head/> AJAX響應中的標記
  • 21. IE中的Telerik Date Picker <8
  • 22. CSS並不適用於IE <8
  • 23. IE 8不滾動到#id <tr>
  • 24. MooTools:解析Ajax響應樹
  • 25. 解析JSON Ajax響應
  • 26. Jsoup解析不顯示內容<body>標籤
  • 27. SimpleHTMLDOM解析器不拾取img標籤<body>
  • 28. 看來「IE = EmulateIE7」也會使「<! - [if lt IE 8]>」爲真?
  • 29. <a>標記未在AJAX中解析
  • 30. HTML <select>標籤不與自舉類工作在IE 8個angularjs