]> 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:35:53 +0000 (11:35 -0400)
src/data.js
test/unit/data.js

index 5baf1c72a398ea49b45806852ae4f16a3a3be456..63920bb9efcd1b16b4610d1b11f30f251980cc90 100644 (file)
@@ -36,7 +36,7 @@ function dataAttr( elem, key, data ) {
                                        data === "null" ? null :
                                        // Only convert to a number if it doesn't change the string
                                        +data + "" === data ? +data :
-                                       rbrace.test( data ) ? JSON.parse( data ) :
+                                       rbrace.test( data ) ? jQuery.parseJSON( data ) :
                                        data;
                        } catch( e ) {}
 
index e26587024a4f9d5d1b4d9c0d85f243d2b0a283ee..bf5629644b9ab1b67ea163712e402e01a06732cf 100644 (file)
@@ -262,7 +262,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>");
@@ -319,17 +318,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")
@@ -377,12 +370,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