@@ -109,7 +109,12 @@ if (typeof jQuery === 'undefined') {
109109 selector = selector && selector . replace ( / .* (? = # [ ^ \s ] * $ ) / , '' ) // strip for ie7
110110 }
111111
112- var $parent = $ ( selector )
112+ var $parent
113+ try {
114+ $parent = selector ? $ ( document ) . find ( selector ) : $ ( )
115+ } catch ( e ) {
116+ $parent = $ ( )
117+ }
113118
114119 if ( e ) e . preventDefault ( )
115120
@@ -502,7 +507,14 @@ if (typeof jQuery === 'undefined') {
502507 var clickHandler = function ( e ) {
503508 var href
504509 var $this = $ ( this )
505- var $target = $ ( $this . attr ( 'data-target' ) || ( href = $this . attr ( 'href' ) ) && href . replace ( / .* (? = # [ ^ \s ] + $ ) / , '' ) ) // strip for ie7
510+ var selector = $this . attr ( 'data-target' ) || ( href = $this . attr ( 'href' ) ) && href . replace ( / .* (? = # [ ^ \s ] + $ ) / , '' ) // strip for ie7
511+ var $target
512+ try {
513+ $target = selector ? $ ( document ) . find ( selector ) : $ ( )
514+ } catch ( e ) {
515+ $target = $ ( )
516+ }
517+
506518 if ( ! $target . hasClass ( 'carousel' ) ) return
507519 var options = $ . extend ( { } , $target . data ( ) , $this . data ( ) )
508520 var slideIndex = $this . attr ( 'data-slide-to' )
@@ -691,7 +703,11 @@ if (typeof jQuery === 'undefined') {
691703 var target = $trigger . attr ( 'data-target' )
692704 || ( href = $trigger . attr ( 'href' ) ) && href . replace ( / .* (? = # [ ^ \s ] + $ ) / , '' ) // strip for ie7
693705
694- return $ ( target )
706+ try {
707+ return target ? $ ( document ) . find ( target ) : $ ( )
708+ } catch ( e ) {
709+ return $ ( )
710+ }
695711 }
696712
697713
@@ -773,7 +789,12 @@ if (typeof jQuery === 'undefined') {
773789 selector = selector && / # [ A - Z a - z ] / . test ( selector ) && selector . replace ( / .* (? = # [ ^ \s ] * $ ) / , '' ) // strip for ie7
774790 }
775791
776- var $parent = selector && $ ( selector )
792+ var $parent
793+ try {
794+ $parent = selector && $ ( document ) . find ( selector )
795+ } catch ( e ) {
796+ $parent = $ ( )
797+ }
777798
778799 return $parent && $parent . length ? $parent : $this . parent ( )
779800 }
@@ -1230,7 +1251,13 @@ if (typeof jQuery === 'undefined') {
12301251 $ ( document ) . on ( 'click.bs.modal.data-api' , '[data-toggle="modal"]' , function ( e ) {
12311252 var $this = $ ( this )
12321253 var href = $this . attr ( 'href' )
1233- var $target = $ ( $this . attr ( 'data-target' ) || ( href && href . replace ( / .* (? = # [ ^ \s ] + $ ) / , '' ) ) ) // strip for ie7
1254+ var selector = $this . attr ( 'data-target' ) || ( href && href . replace ( / .* (? = # [ ^ \s ] + $ ) / , '' ) ) // strip for ie7
1255+ var $target
1256+ try {
1257+ $target = selector ? $ ( document ) . find ( selector ) : $ ( )
1258+ } catch ( e ) {
1259+ $target = $ ( )
1260+ }
12341261 var option = $target . data ( 'bs.modal' ) ? 'toggle' : $ . extend ( { remote : ! / # / . test ( href ) && href } , $target . data ( ) , $this . data ( ) )
12351262
12361263 if ( $this . is ( 'a' ) ) e . preventDefault ( )
@@ -1550,11 +1577,18 @@ if (typeof jQuery === 'undefined') {
15501577 . css ( isVertical ? 'top' : 'left' , '' )
15511578 }
15521579
1580+ function sanitizeHtml ( string ) {
1581+ if ( typeof DOMPurify !== 'undefined' && typeof string === 'string' ) {
1582+ return DOMPurify . sanitize ( string )
1583+ }
1584+ return string
1585+ }
1586+
15531587 Tooltip . prototype . setContent = function ( ) {
15541588 var $tip = this . tip ( )
15551589 var title = this . getTitle ( )
15561590
1557- $tip . find ( '.tooltip-inner' ) [ this . options . html ? 'html' : 'text' ] ( title )
1591+ $tip . find ( '.tooltip-inner' ) [ this . options . html ? 'html' : 'text' ] ( this . options . html ? sanitizeHtml ( title ) : title )
15581592 $tip . removeClass ( 'fade in top bottom left right' )
15591593 }
15601594
0 commit comments