2016-03-26 118 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

试图隐藏已经隐藏的元素不一定是错误。由于格式不正确而无法附加新元素是一个错误。猜猜我最好开始使用棉绒。 –