javascript事件处理
我正在开发一个非常轻量级的系统来测试我为工作而构建的javascript框架 我已经创建了一个测试函数,它充当一个包装器,在try/catch中调用我正在测试的函数,以报告反馈,而不中断我的测试周期。问题是,当我故意创建错误时,我的捕获没有被调用 我的代码javascript事件处理,javascript,Javascript,我正在开发一个非常轻量级的系统来测试我为工作而构建的javascript框架 我已经创建了一个测试函数,它充当一个包装器,在try/catch中调用我正在测试的函数,以报告反馈,而不中断我的测试周期。问题是,当我故意创建错误时,我的捕获没有被调用 我的代码 /// <summary> /// Acts as a wrapper to allow us to perform and report the result /// of each i
/// <summary>
/// Acts as a wrapper to allow us to perform and report the result
/// of each individual
/// test without blocking further tests.
/// </summary>
/// <param name="selector" type="String">
/// The id jQuery selector e.g #versionTests to repot feedback to.
/// </param>
/// <param name="testFunction" type="Function">
/// The test function to call.
/// </param>
test: function (selector, testFunction) {
try {
// now we are calling our own callback function
if (typeof testFunction === 'function') {
testFunction.call();
}
} catch (e) {
jQuery(selector).addClass("error").append("<p>" + e.description + "</p>");
}
}
这就叫。。。。。。。(this.selector
是反映jQuerys选择器的属性。)
注意$selector.height(最高)上缺少的'$'
代码>
均衡器高度:功能(){
///
///使指定元素的高度相等。
///
var$selector=0,$selector=this.selector;
$selector.each(函数(){
var$height=jQuery(this).height();
如果($height>$highter){
$highter=$height;
}
});
//ie6高度与其他浏览器的最小高度相同。
if(PeachUI.browser.ie6){
$selector.高度(最高);
}否则{
$selector.css(“最小高度“,$highter);
}
}
要么testFunction没有被调用(它被包装在条件中),要么添加错误的代码不正确
我将使用调试器跟踪测试执行,并验证它是否遵循您认为的路径。或者console.logs()要么testFunction没有被调用(它被包装在一个条件中),要么添加错误的代码不正确
我将使用调试器跟踪测试执行,并验证它是否遵循您认为的路径。或者console.logs()您实际上不需要调用.call()
。您只需使用:
testFunction();
如果要显式设置执行上下文,可以使用.call(context,param1,param2,…)
你如何“故意”制造错误?尝试在testFunction
like中引发异常
throw new Error('Foo Bar');
这里最后要提到的是,异常对象
不拥有属性描述
,而是消息
示例:实际上不需要调用.call()
。您只需使用:
testFunction();
如果要显式设置执行上下文,可以使用.call(context,param1,param2,…)
你如何“故意”制造错误?尝试在testFunction
like中引发异常
throw new Error('Foo Bar');
这里最后要提到的是,异常对象
不拥有属性描述
,而是消息
示例:当我看你的照片时,我觉得你做了一件了不起的事(最后几行):
在这里,您将对PeachTest.testNumeric
的引用传递给PeachTest.test
,但您正在调用其他三个测试函数,并将这些函数返回的值传递给PeachTest.test
删除这些参数后面的函数调用操作符(()
),您的测试函数将按预期工作。当查看您的时,我觉得您做了这件了不起的事情(最后几行):
在这里,您将对PeachTest.testNumeric
的引用传递给PeachTest.test
,但您正在调用其他三个测试函数,并将这些函数返回的值传递给PeachTest.test
删除函数调用操作符(()
)在这些参数后面,您的测试函数按预期工作。您可以发布应该创建错误的代码吗?您可以发布应该创建错误的代码吗?@hvgotcodes:testfunction在我删除错误时肯定会在运行时被调用。@hvgotcodes:testfunction在运行时肯定会被调用当我删除错误时。@jAndy:您可以将description属性归咎于w3schools。詹姆斯:W3Schools充满了错误、糟糕的编码实践、可怕的例子等等。请注意,W3Schools根本不隶属于W3C。要获得更好的指南,请参阅(您可以在那里看到description
是一个专有属性)。@JamesSouth:我不怪任何人。我只是想指出:)@jAndy很抱歉回复太慢(漫长的周末)。我已经尝试了你的建议,但是错误消息没有传递给处理程序。这超出了我的能力。我已经创建了一个关于小提琴的例子,如果你喜欢一个裂纹@Marcel:Thancing链接。非常有用。@jAndy:你可以把description属性归咎于学校。詹姆斯:W3Schools充满了错误、糟糕的编码实践、可怕的例子等等。请注意,W3Schools根本不隶属于W3C。要获得更好的指南,请参阅(您可以在那里看到description
是一个专有属性)。@JamesSouth:我不怪任何人。我只是想指出:)@jAndy很抱歉回复太慢(漫长的周末)。我已经尝试了你的建议,但是错误消息没有传递给处理程序。这超出了我的能力。我已经创建了一个关于小提琴的例子,如果你喜欢一个裂纹@Marcel:Thancing链接。非常有用。
PeachTest.test("#versionTests", PeachTest.testVersion());
PeachTest.test("#browserTests", PeachTest.testBrowser());
PeachTest.test("#isNumericTests", PeachTest.testNumeric);
PeachTest.test("#heightTests", PeachTest.testEqualizeHeight());