Update test case to feature-detect Opera's lack of defaultPrevented and skip the...
[jquery.git] / test / unit / event.js
index d0183f8..d5d6790 100644 (file)
@@ -300,24 +300,28 @@ test("bind/delegate bubbling, isDefaultPrevented", function() {
        var $anchor2 = jQuery( "#anchor2" ),
                $main = jQuery( "#main" ),
                fakeClick = function($jq) {
-                       // Prefer a native click so we don't get jQuery simulated bubbling
-                       if ( $jq[0].click ) {
-                               $jq[0].click(); // IE
-                       }
-                       else if ( document.createEvent ) {
+                       // Use a native click so we don't get jQuery simulated bubbling
+                       if ( document.createEvent ) {
                                var e = document.createEvent( 'MouseEvents' );
                                e.initEvent( "click", true, true ); 
                                $jq[0].dispatchEvent(e);
                        }
-                       else {
-                               $jq.click();
+                       else if ( $jq[0].click ) {
+                               $jq[0].click(); // IE
                        }
                };
        $anchor2.click(function(e) {
                e.preventDefault();
        });
        $main.delegate("#foo", "click", function(e) {
-               equals( e.isDefaultPrevented(), true, "isDefaultPrevented true passed to bubbled event" );
+               var orig = e.originalEvent;
+               if ( typeof(orig.defaultPrevented) === "boolean" || typeof(orig.returnValue) === "boolean" || orig.getPreventDefault ) {
+                       equals( e.isDefaultPrevented(), true, "isDefaultPrevented true passed to bubbled event" );
+               }
+               else {
+                       // Opera < 11 doesn't implement any interface we can use, so give it a pass
+                       ok( true, "isDefaultPrevented not supported by this browser, test skipped" );
+               }
        });
        fakeClick( $anchor2 );
        $anchor2.unbind( "click" );