tuiHoneyPot

front and back end of my TUI honeypot
Log | Files | Refs | README

support.js (4854B)


      1 define( [
      2 	"../core",
      3 	"../var/document",
      4 	"../var/documentElement",
      5 	"../var/support"
      6 ], function( jQuery, document, documentElement, support ) {
      7 
      8 "use strict";
      9 
     10 ( function() {
     11 
     12 	// Executing both pixelPosition & boxSizingReliable tests require only one layout
     13 	// so they're executed at the same time to save the second computation.
     14 	function computeStyleTests() {
     15 
     16 		// This is a singleton, we need to execute it only once
     17 		if ( !div ) {
     18 			return;
     19 		}
     20 
     21 		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
     22 			"margin-top:1px;padding:0;border:0";
     23 		div.style.cssText =
     24 			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
     25 			"margin:auto;border:1px;padding:1px;" +
     26 			"width:60%;top:1%";
     27 		documentElement.appendChild( container ).appendChild( div );
     28 
     29 		var divStyle = window.getComputedStyle( div );
     30 		pixelPositionVal = divStyle.top !== "1%";
     31 
     32 		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
     33 		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
     34 
     35 		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
     36 		// Some styles come back with percentage values, even though they shouldn't
     37 		div.style.right = "60%";
     38 		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
     39 
     40 		// Support: IE 9 - 11 only
     41 		// Detect misreporting of content dimensions for box-sizing:border-box elements
     42 		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
     43 
     44 		// Support: IE 9 only
     45 		// Detect overflow:scroll screwiness (gh-3699)
     46 		// Support: Chrome <=64
     47 		// Don't get tricked when zoom affects offsetWidth (gh-4029)
     48 		div.style.position = "absolute";
     49 		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
     50 
     51 		documentElement.removeChild( container );
     52 
     53 		// Nullify the div so it wouldn't be stored in the memory and
     54 		// it will also be a sign that checks already performed
     55 		div = null;
     56 	}
     57 
     58 	function roundPixelMeasures( measure ) {
     59 		return Math.round( parseFloat( measure ) );
     60 	}
     61 
     62 	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
     63 		reliableTrDimensionsVal, reliableMarginLeftVal,
     64 		container = document.createElement( "div" ),
     65 		div = document.createElement( "div" );
     66 
     67 	// Finish early in limited (non-browser) environments
     68 	if ( !div.style ) {
     69 		return;
     70 	}
     71 
     72 	// Support: IE <=9 - 11 only
     73 	// Style of cloned element affects source element cloned (trac-8908)
     74 	div.style.backgroundClip = "content-box";
     75 	div.cloneNode( true ).style.backgroundClip = "";
     76 	support.clearCloneStyle = div.style.backgroundClip === "content-box";
     77 
     78 	jQuery.extend( support, {
     79 		boxSizingReliable: function() {
     80 			computeStyleTests();
     81 			return boxSizingReliableVal;
     82 		},
     83 		pixelBoxStyles: function() {
     84 			computeStyleTests();
     85 			return pixelBoxStylesVal;
     86 		},
     87 		pixelPosition: function() {
     88 			computeStyleTests();
     89 			return pixelPositionVal;
     90 		},
     91 		reliableMarginLeft: function() {
     92 			computeStyleTests();
     93 			return reliableMarginLeftVal;
     94 		},
     95 		scrollboxSize: function() {
     96 			computeStyleTests();
     97 			return scrollboxSizeVal;
     98 		},
     99 
    100 		// Support: IE 9 - 11+, Edge 15 - 18+
    101 		// IE/Edge misreport `getComputedStyle` of table rows with width/height
    102 		// set in CSS while `offset*` properties report correct values.
    103 		// Behavior in IE 9 is more subtle than in newer versions & it passes
    104 		// some versions of this test; make sure not to make it pass there!
    105 		//
    106 		// Support: Firefox 70+
    107 		// Only Firefox includes border widths
    108 		// in computed dimensions. (gh-4529)
    109 		reliableTrDimensions: function() {
    110 			var table, tr, trChild, trStyle;
    111 			if ( reliableTrDimensionsVal == null ) {
    112 				table = document.createElement( "table" );
    113 				tr = document.createElement( "tr" );
    114 				trChild = document.createElement( "div" );
    115 
    116 				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
    117 				tr.style.cssText = "box-sizing:content-box;border:1px solid";
    118 
    119 				// Support: Chrome 86+
    120 				// Height set through cssText does not get applied.
    121 				// Computed height then comes back as 0.
    122 				tr.style.height = "1px";
    123 				trChild.style.height = "9px";
    124 
    125 				// Support: Android 8 Chrome 86+
    126 				// In our bodyBackground.html iframe,
    127 				// display for all div elements is set to "inline",
    128 				// which causes a problem only in Android 8 Chrome 86.
    129 				// Ensuring the div is `display: block`
    130 				// gets around this issue.
    131 				trChild.style.display = "block";
    132 
    133 				documentElement
    134 					.appendChild( table )
    135 					.appendChild( tr )
    136 					.appendChild( trChild );
    137 
    138 				trStyle = window.getComputedStyle( tr );
    139 				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
    140 					parseInt( trStyle.borderTopWidth, 10 ) +
    141 					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
    142 
    143 				documentElement.removeChild( table );
    144 			}
    145 			return reliableTrDimensionsVal;
    146 		}
    147 	} );
    148 } )();
    149 
    150 return support;
    151 
    152 } );