]> source.dussan.org Git - jquery.git/commitdiff
Fix #14459: Use jQuery.parseJSON instead of JSON.parse
authorRichard Gibson <richard.gibson@gmail.com>
Mon, 28 Oct 2013 15:35:53 +0000 (11:35 -0400)
committerRichard Gibson <richard.gibson@gmail.com>
Mon, 28 Oct 2013 15:39:43 +0000 (11:39 -0400)
(cherry picked from commit ced9d155f010bc456745a55a63ca959db9d405d3)

src/data.js
test/unit/data.js

index 16dd4276a3c4696a72480b72bf00eca4eb4771b3..248a5df501b2815a4ac73a50d95ae164ab1d5708 100644 (file)
@@ -25,7 +25,7 @@ function dataAttr( elem, key, data ) {
                                        // Only convert to a number if it doesn't change the string
                                        +data + "" === data ? +data :
                                        rbrace.test( data ) ? jQuery.parseJSON( data ) :
-                                               data;
+                                       data;
                        } catch( e ) {}
 
                        // Make sure we set the data so it isn't changed later
index 9c9d54f39a042eb93b74c4058a90bfd095373ccb..1e857ae6e97f8a88159e0df853fd23d23a8d891d 100644 (file)
@@ -244,7 +244,6 @@ test("data-* attributes", function() {
        var prop, i, l, metadata, elem,
                obj, obj2, check, num, num2,
                parseJSON = jQuery.parseJSON,
-               nativeParse = typeof JSON !== "undefined" && JSON.parse,
                div = jQuery("<div>"),
                child = jQuery("<div data-myobj='old data' data-ignored=\"DOM\" data-other='test'></div>"),
                dummy = jQuery("<div data-myobj='old data' data-ignored=\"DOM\" data-other='test'></div>");
@@ -301,17 +300,11 @@ test("data-* attributes", function() {
        equal( child.data("other"), "test", "Make sure value was pulled in properly from a .data()." );
 
        // attribute parsing
-       i = l = 0;
+       i = 0;
        jQuery.parseJSON = function() {
                i++;
                return parseJSON.apply( this, arguments );
        };
-       if ( nativeParse ) {
-               JSON.parse = function() {
-                       l++;
-                       return nativeParse.apply( this, arguments );
-               };
-       }
 
        child
                .attr("data-true", "true")
@@ -359,12 +352,9 @@ test("data-* attributes", function() {
        strictEqual( child.data("space"), " ", "Whitespace string read from attribute");
        strictEqual( child.data("null"), null, "Primitive null read from attribute");
        strictEqual( child.data("string"), "test", "Typical string read from attribute");
-       equal( i || l, 2, "Correct number of JSON parse attempts when reading from attributes" );
+       equal( i, 2, "Correct number of JSON parse attempts when reading from attributes" );
 
        jQuery.parseJSON = parseJSON;
-       if ( nativeParse ) {
-               JSON.parse = nativeParse;
-       }
        child.remove();
 
        // tests from metadata plugin