@@ -2364,6 +2364,46 @@ test( "jQuery._evalUrl (#12838)", function() {
23642364 jQuery . _evalUrl = evalUrl ;
23652365} ) ;
23662366
2367+ test ( "jQuery.htmlPrefilter (gh-1747)" , function ( assert ) {
2368+
2369+ assert . expect ( 5 ) ;
2370+
2371+ var expectedArgument ,
2372+ invocations = 0 ,
2373+ htmlPrefilter = jQuery . htmlPrefilter ,
2374+ fixture = jQuery ( "<div/>" ) . appendTo ( "#qunit-fixture" ) ,
2375+ poison = "<script>jQuery.htmlPrefilter.assert.ok( false, 'script not executed' );</script>" ,
2376+ done = assert . async ( ) ;
2377+
2378+ jQuery . htmlPrefilter = function ( html ) {
2379+ invocations ++ ;
2380+ assert . equal ( html , expectedArgument , "Expected input" ) ;
2381+
2382+ // Remove <script> and <del> elements
2383+ return htmlPrefilter . apply ( this , arguments )
2384+ . replace ( / < ( s c r i p t | d e l ) (? = [ \s \n > ] ) [ \w \W ] * ?< \/ \1[ \s \n ] * > / ig, "" ) ;
2385+ } ;
2386+ jQuery . htmlPrefilter . assert = assert ;
2387+
2388+ expectedArgument = "A-" + poison + "B-" + poison + poison + "C-" ;
2389+ fixture . html ( expectedArgument ) ;
2390+
2391+ expectedArgument = "D-" + poison + "E-" + "<del/><div>" + poison + poison + "</div>" + "F-" ;
2392+ fixture . append ( expectedArgument ) ;
2393+
2394+ expectedArgument = poison ;
2395+ fixture . find ( "div" ) . replaceWith ( expectedArgument ) ;
2396+
2397+ assert . equal ( invocations , 3 , "htmlPrefilter invoked for all DOM manipulations" ) ;
2398+ assert . equal ( fixture . html ( ) , "A-B-C-D-E-F-" , "htmlPrefilter modified HTML" ) ;
2399+
2400+ // Allow asynchronous script execution to generate assertions
2401+ setTimeout ( function ( ) {
2402+ jQuery . htmlPrefilter = htmlPrefilter ;
2403+ done ( ) ;
2404+ } , 100 ) ;
2405+ } ) ;
2406+
23672407test ( "insertAfter, insertBefore, etc do not work when destination is original element. Element is removed (#4087)" , function ( ) {
23682408
23692409 expect ( 10 ) ;
0 commit comments