Skip to content

Commit 7b1ff32

Browse files
authored
Manipulation: Allow to restore the legacy jQuery.htmlPrefilter
Closes jquerygh-328
1 parent b9cefc3 commit 7b1ff32

5 files changed

+56
-1
lines changed

Gruntfile.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module.exports = function( grunt ) {
2020
"src/data.js",
2121
"src/effects.js",
2222
"src/event.js",
23+
"src/manipulation.js",
2324
"src/offset.js",
2425
"src/serialize.js",
2526
"src/traversing.js",
@@ -130,6 +131,7 @@ module.exports = function( grunt ) {
130131
"test/deferred.js",
131132
"test/effects.js",
132133
"test/event.js",
134+
"test/manipulation.js",
133135
"test/offset.js",
134136
"test/serialize.js",
135137
"test/traversing.js",

src/manipulation.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;
2+
3+
jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
4+
jQuery.htmlPrefilter = function( html ) {
5+
return html.replace( rxhtmlTag, "<$1></$2>" );
6+
};
7+
};

test/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,13 @@
3232
<script src="attributes.js"></script>
3333
<script src="css.js"></script>
3434
<script src="data.js"></script>
35+
<script src="effects.js"></script>
3536
<script src="event.js"></script>
37+
<script src="manipulation.js"></script>
3638
<script src="offset.js"></script>
3739
<script src="serialize.js"></script>
3840
<script src="traversing.js"></script>
3941
<script src="deferred.js"></script>
40-
<script src="effects.js"></script>
4142
</head>
4243
<body>
4344
<div id="qunit"></div>
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>jQuery Migrate manipulation jQuery.UNSAFE_restoreLegacyHtmlPrefilter iframe test</title>
6+
7+
<!-- Load a jQuery and jquery-migrate plugin file based on URL -->
8+
<script src="testinit.js"></script>
9+
<script>
10+
TestManager.loadProject( "jquery", "git" );
11+
</script>
12+
<script src="iframeTest.js"></script>
13+
<script>
14+
jQuery.noConflict();
15+
TestManager.loadProject( "jquery-migrate", "dev", true );
16+
</script>
17+
<script>
18+
jQuery.UNSAFE_restoreLegacyHtmlPrefilter();
19+
20+
var elem = jQuery( "<div/><span/>" ),
21+
childCount = elem.length,
22+
firstNodeName = elem[ 0 ] && elem[ 0 ].nodeName.toLowerCase(),
23+
secondNodeName = elem[ 1 ] && elem[ 1 ].nodeName.toLowerCase();
24+
25+
startIframeTest( childCount, firstNodeName, secondNodeName );
26+
</script>
27+
</head>
28+
<body>
29+
<p>jQuery Migrate</p>
30+
</body>
31+
</html>

test/manipulation.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use strict";
2+
3+
QUnit.module( "manipulation" );
4+
5+
// Do this as iframe because there is no way to undo `jQuery.UNSAFE_restoreLegacyHtmlPrefilter()`
6+
TestManager.runIframeTest( "jQuery.UNSAFE_restoreLegacyHtmlPrefilter",
7+
"manipulation-UNSAFE_restoreLegacyHtmlPrefilter.html",
8+
function( assert, jQuery, window, document, log, childCount, firstNodeName, secondNodeName ) {
9+
assert.expect( 3 );
10+
11+
assert.strictEqual( childCount, 2, "Proper child count" );
12+
assert.strictEqual( firstNodeName, "div", "Proper first element" );
13+
assert.strictEqual( secondNodeName, "span", "Proper second element" );
14+
} );

0 commit comments

Comments
 (0)