From: John Resig <jeresig@gmail.com> Date: Wed, 11 Nov 2009 19:23:56 +0000 (-0500) Subject: Fixed the case where HTML that contained entities was being inserted as text strings... X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=7c4144fab314d98b85303d01ab904bb711bc2ecc;p=jquery.git Fixed the case where HTML that contained entities was being inserted as text strings instead of HTML. Thanks to dmethvin for the test case! Fixes #5483. --- diff --git a/src/manipulation.js b/src/manipulation.js index eea377b..1699f68 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -4,7 +4,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rselfClosing = /^(?:abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i, rtagName = /<([\w:]+)/, rtbody = /<tbody/i, - rhtml = /</, + rhtml = /<|&\w+;/, fcloseTag = function(all, front, tag){ return rselfClosing.test(tag) ? all : diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 0098416..0f11de4 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -643,7 +643,7 @@ test("val(Function)", function() { }) var testHtml = function(valueObj) { - expect(17); + expect(20); window.debug = true; @@ -676,6 +676,12 @@ var testHtml = function(valueObj) { equals( $div.html(valueObj( 5 )).html(), '5', 'Setting a number as html' ); equals( $div.html(valueObj( 0 )).html(), '0', 'Setting a zero as html' ); + var $div2 = jQuery('<div/>'), insert = "<div>hello1</div>"; + equals( $div2.html(insert).html(), insert, "Verify escaped insertion." ); + equals( $div2.html("x" + insert).html(), "x" + insert, "Verify escaped insertion." ); + equals( $div2.html(" " + insert).html(), " " + insert, "Verify escaped insertion." ); + + reset(); jQuery("#main").html(valueObj('<script type="something/else">ok( false, "Non-script evaluated." );</script><script type="text/javascript">ok( true, "text/javascript is evaluated." );</script><script>ok( true, "No type is evaluated." );</script><div><script type="text/javascript">ok( true, "Inner text/javascript is evaluated." );</script><script>ok( true, "Inner No type is evaluated." );</script><script type="something/else">ok( false, "Non-script evaluated." );</script></div>'));