2016-03-26 116 views
0

我有這個代碼:jQuery在哪裏發送錯誤消息?

var location = . . . 
$body.append('<img class="bgimg" src="' + location+'>'); 

,它不能正常工作。我檢查了控制檯的輸出(沒有任何),並在注意到我在末尾忘記了"之前>之前嘗試了多種不同的東西(包括檢查開發工具中的頁面源代碼和元素選項卡)。

所以,我的問題是:jQuery顯然足夠聰明,不會添加一個格式不正確的元素 - 但它是否產生了一個錯誤消息,如果是的話,它把它放在哪裏?

回答

3

jQuery不會在任何地方寫錯誤。如果發生錯誤並且jQuery無法捕獲它,它最終會通過腳本引擎向控制檯報告,但jQuery本身不會執行任何錯誤報告。

我認爲這更多是因爲它沒有檢測到錯誤。舉例來說,在這種情況下,把它歸結爲線4631 jQuery中v1.12.2(unminified):

tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter(elem) + wrap[ 2 ]; 

...,它與你的字符串,實際上是:

tmp.innerHTML = '<img class="bgimg" src="...>'; 

瀏覽器不會引發錯誤(Chrome瀏覽器不會),但它也不會將任何元素添加到tmp。所以jQuery最終沒有什麼可追加的。它沒有故意沒有追加任何東西,它只是在添加該字符串時沒有看到任何要追加的內容。

+0

所以,如果你問jQuery做些什麼,它選擇不去,任何地方都沒有通知? –

+0

你覺得很奇怪嗎? – rsabir

+0

@EthanFurman:對。通常我懷疑這不是一種有意的遺漏,而是其他事物的副產品。 –

0

jQuery沒有錯誤報告。

由於jQuery是用JavaScript編寫的,任何無效的jQuery/JavaScript代碼都將導致瀏覽器控制檯中的錯誤消息(請按F12)。

這是非常棘手的,因爲你必須非常小心調試代碼:

$("mysuperclass").hide(); 

將無法​​正常工作,因爲你忘了與.時,預先準備使用類。儘管如果你有一個名爲mysuperclass的標籤的自定義html,它可能是一個有效的選擇器。

而且,考慮一下:你認爲,如果你試圖隱藏一個已經隱藏的元素,它應該大喊一個錯誤信息?

+0

試圖隱藏已經隱藏的元素不一定是錯誤。由於格式不正確而無法附加新元素是一個錯誤。猜猜我最好開始使用棉絨。 –