2010-01-03 108 views
2

我使用一段簡單的代碼jQuery的不兼容與Firefox

$("container").load(url, function(){ callback();})

更換使用jQuery的AJAX功能一個div容器的內容。這似乎與IE瀏覽器,但試圖通過Firefox查看後,我收到了一些意想不到的行爲。

頁面被抓取並正確放置在div內部一會兒;那麼整個頁面似乎會自動刷新,似乎將自身重定向到一個以

wyciwyg://1/http://
爲前綴的頁面。不用說,它只是掛在那裏,沒有任何反應,除非我點擊Firefox的停止按鈕。 IE/Firefox可能會在jQuery中引起這樣的行爲嗎?在此先感謝您的幫助。

+1

你*看到的是什麼*我*得到 – 2010-01-03 21:25:10

+1

什麼是你正在加載的URL? – 2010-01-03 21:25:10

+0

感謝指針cballou。我查閱了http://en.wikipedia.org/wiki/WYCIWYG。好的,但我該如何避免這種情況? – heeboir 2010-01-03 21:32:17

回答

2

在目標url處返回的文檔中可能有<script>標籤。

將內容加載到包含<script>頁面的頁面中的標籤具有jQuery無法隱藏的瀏覽器特定怪癖(好吧......它會嘗試,但是在這個過程中會讓怪癖更加古怪和奇怪)。您應該避免使用與load()一樣的HTML頁面。這意味着通常不包含任何包含任何舊HTML結構的任意頁面,但僅包含旨在用於jQuery內容加載的地址。

雖然這很難說,爲什麼在目標頁面的腳本可能會最終有一個wyciwyg URL更換頁面沒有一些代碼,它發生在calls to document.write過去,這是一個行爲肯定會造成斷線玩一般情況下,您不能從已經解析過的文檔(如您將要加載的文檔)寫入document。它也可以是一個與附加組件的交互。

+0

感謝您的回答,目標頁確實包含

2

如果document.write是您的問題,請嘗試writeCapture.js(完全披露:我是作者)。它有一個jQuery plugin所以包括它和你的代碼更改爲:

$("container").writeCapture().load(url, function(){ callback();}); 

,看看是否能不能解決問題。