@@ -204,37 +204,46 @@ const get_scr_measure = () => new Promise(resolve => {
204
204
Promise . all ( [
205
205
get_scr_mm ( 'measure' ) ,
206
206
] ) . then ( function ( mmres ) {
207
- let tmpScreen = { } , tmpWindow = { } , oScreen = { } , oWindow = { }
207
+ let oTmp = { 'screen' : { } , 'window' : { } , 'iframe' : { } } , oIframe = { } , oScreen = { } , oWindow = { }
208
208
// matchmedia
209
- tmpScreen [ "device-height" ] = mmres [ 0 ] [ "device-height" ]
210
- tmpScreen [ "device-width" ] = mmres [ 0 ] [ "device-width" ]
211
- tmpWindow [ "height" ] = mmres [ 0 ] [ "height" ]
212
- tmpWindow [ "width" ] = mmres [ 0 ] [ "width" ]
209
+ oTmp . screen [ "device-height" ] = mmres [ 0 ] [ "device-height" ]
210
+ oTmp . screen [ "device-width" ] = mmres [ 0 ] [ "device-width" ]
211
+ oTmp . window [ "height" ] = mmres [ 0 ] [ "height" ]
212
+ oTmp . window [ "width" ] = mmres [ 0 ] [ "width" ]
213
213
// screen/window
214
- let aList = [
215
- "width" , "height" , "availWidth" , "availHeight" , // scr
216
- "outerWidth" , "outerHeight" , "innerWidth" , "innerHeight" , // window
217
- ]
214
+ let oList = {
215
+ 'screen' : [ "width" , "height" , "availWidth" , "availHeight" ] ,
216
+ 'window' : [ "outerWidth" , "outerHeight" , "innerWidth" , "innerHeight" ] ,
217
+ "iframe" : [ "width" , "height" , "availWidth" , "availHeight" , "outerWidth" , "outerHeight" ] ,
218
+ }
219
+ let iTarget
220
+ try { iTarget = dom . iFrameBlank . contentWindow } catch ( e ) { }
221
+
218
222
//runST = true
219
- for ( let i = 0 ; i < 8 ; i ++ ) {
220
- let x
221
- let prefix = ( ( i < 4 ) ? "screen" : "window" ) + '_sizes_'
222
- try {
223
- if ( i < 4 ) { x = screen [ aList [ i ] ]
224
- } else { x = window [ aList [ i ] ]
225
- }
226
- if ( runST ) {
227
- let oTest = { 1 : NaN , 2 : Infinity , 3 : "" , 4 : "6" , 5 : null , 6 : false , 7 : [ 1 ] , 8 : { 1 :1 } }
228
- x = oTest [ i ]
223
+ for ( const k of Object . keys ( oList ) ) {
224
+ let aList = oList [ k ]
225
+ for ( let i = 0 ; i < aList . length ; i ++ ) {
226
+ let x , p = aList [ i ]
227
+ try {
228
+ if ( 'screen' == k ) { x = screen [ p ]
229
+ } else if ( 'window' == k ) { x = window [ p ]
230
+ } else {
231
+ if ( i < 4 ) { x = iTarget . screen [ p ] } else { x = iTarget . window [ p ] }
232
+ }
233
+ if ( runST ) {
234
+ let oTest = { 1 : NaN , 2 : Infinity , 3 : "" , 4 : "6" , 5 : null , 6 : false , 7 : [ 1 ] , 8 : { 1 :1 } }
235
+ x = oTest [ i ]
236
+ }
237
+ let typeCheck = typeFn ( x )
238
+ if ( "number" !== typeCheck ) { throw zErrType + typeCheck }
239
+ } catch ( e ) {
240
+ log_error ( 1 , k + '_sizes_' + p , e )
241
+ x = zErr
229
242
}
230
- let typeCheck = typeFn ( x )
231
- if ( "number" !== typeCheck ) { throw zErrType + typeCheck }
232
- } catch ( e ) {
233
- log_error ( 1 , prefix + aList [ i ] , e )
234
- x = zErr
243
+ oTmp [ k ] [ p ] = x
235
244
}
236
- if ( i < 4 ) { tmpScreen [ aList [ i ] ] = x } else { tmpWindow [ aList [ i ] ] = x }
237
245
}
246
+
238
247
//runST = false
239
248
// css
240
249
let cssList = [
@@ -245,7 +254,6 @@ const get_scr_measure = () => new Promise(resolve => {
245
254
]
246
255
cssList . forEach ( function ( array ) {
247
256
let cssID = array [ 0 ] , pseudo = array [ 1 ] , item = array [ 2 ] , metric = array [ 3 ]
248
-
249
257
let value = getElementProp ( 1 , cssID , metric + '_sizes_' + item , pseudo )
250
258
if ( value !== zErr && '?' !== value ) {
251
259
let cType = typeFn ( value )
@@ -254,59 +262,89 @@ const get_scr_measure = () => new Promise(resolve => {
254
262
value = zErr
255
263
}
256
264
}
257
- if ( array [ 0 ] == "#S" ) { tmpScreen [ item ] = value } else { tmpWindow [ item ] = value }
265
+ if ( array [ 0 ] == "#S" ) { oTmp . screen [ item ] = value } else { oTmp . window [ item ] = value }
258
266
} )
259
267
// default display
260
268
let oDisplay = {
261
- "mAvailable" : tmpScreen . availWidth + " x " + tmpScreen . availHeight ,
262
- "mmScreen" : tmpScreen [ "device-width" ] + " x " + tmpScreen [ "device-height" ] ,
263
- "mScreen" : tmpScreen . width + " x " + tmpScreen . height ,
264
- "mOuter" : tmpWindow . outerWidth + " x " + tmpWindow . outerHeight ,
265
- "mmInner" : tmpWindow . width + " x " + tmpWindow . height ,
266
- "mInner" : tmpWindow . innerWidth + " x " + tmpWindow . innerHeight ,
269
+ "iAvailable" : oTmp . iframe . availWidth + " x " + oTmp . iframe . availHeight ,
270
+ "iScreen" : oTmp . iframe . width + " x " + oTmp . iframe . height ,
271
+ "iOuter" : oTmp . iframe . outerWidth + " x " + oTmp . iframe . outerHeight ,
272
+ "mAvailable" : oTmp . screen . availWidth + " x " + oTmp . screen . availHeight ,
273
+ "mmScreen" : oTmp . screen [ "device-width" ] + " x " + oTmp . screen [ "device-height" ] ,
274
+ "mScreen" : oTmp . screen . width + " x " + oTmp . screen . height ,
275
+ "mOuter" : oTmp . window . outerWidth + " x " + oTmp . window . outerHeight ,
276
+ "mmInner" : oTmp . window . width + " x " + oTmp . window . height ,
277
+ "mInner" : oTmp . window . innerWidth + " x " + oTmp . window . innerHeight ,
267
278
"initialInner" : isInitial . innerWidth + " x " + isInitial . innerHeight ,
268
279
"initialOuter" : isInitial . outerWidth + " x " + isInitial . outerHeight ,
269
280
}
270
281
271
282
// order into new objects
272
- for ( const k of Object . keys ( tmpScreen ) . sort ( ) ) { oScreen [ k ] = tmpScreen [ k ] }
273
- for ( const k of Object . keys ( tmpWindow ) . sort ( ) ) { oWindow [ k ] = tmpWindow [ k ] }
283
+ for ( const k of Object . keys ( oTmp . screen ) . sort ( ) ) { oScreen [ k ] = oTmp . screen [ k ] }
284
+ for ( const k of Object . keys ( oTmp . window ) . sort ( ) ) { oWindow [ k ] = oTmp . window [ k ] }
285
+ for ( const k of Object . keys ( oTmp . iframe ) . sort ( ) ) { oIframe [ k ] = oTmp . iframe [ k ] }
274
286
275
287
// notations
276
288
let notation = '' , initData = zNA , initHash = ''
277
289
// screen_size_matches_inner
278
- let oCompare = { 1 : [ oScreen . width , oScreen . height , oWindow . innerWidth , oWindow . innerHeight ] }
290
+ let oCompare = {
291
+ 'screen_size_matches_inner' : [ sizes_red , sizes_green , oScreen . width , oScreen . height , oWindow . innerWidth , oWindow . innerHeight ] ,
292
+ 'iframe_sizes_match_inner' : [ isizes_red , isizes_green ,
293
+ oIframe . availWidth , oIframe . availHeight , oIframe . width , oIframe . height , oIframe . outerWidth , oIframe . outerHeight
294
+ ] ,
295
+ }
279
296
// window_sizes_initial
280
297
if ( 'android' == isOS ) {
281
- oCompare [ 2 ] = [ isInitial . innerWidth , isInitial . innerHeight , isInitial . outerWidth , isInitial . outerHeight ]
298
+ oCompare [ 'window_sizes_initial' ] = [ window_red , window_green ,
299
+ isInitial . innerWidth , isInitial . innerHeight , isInitial . outerWidth , isInitial . outerHeight
300
+ ]
282
301
// FP data
283
302
initData = isInitial ; initHash = mini ( isInitial )
284
303
} else {
285
304
// LB/NW
286
- addDisplay ( 1 , 'window_letterbox' , '' , '' , return_lb ( tmpWindow . innerWidth , tmpWindow . innerHeight , isTB ) )
287
- addDisplay ( 1 , 'window_newwin' , '' , '' , return_nw ( tmpWindow . innerWidth , tmpWindow . innerHeight , isTB ) )
305
+ addDisplay ( 1 , 'window_letterbox' , '' , '' , return_lb ( oTmp . window . innerWidth , oTmp . window . innerHeight , isTB ) )
306
+ addDisplay ( 1 , 'window_newwin' , '' , '' , return_nw ( oTmp . window . innerWidth , oTmp . window . innerHeight , isTB ) )
288
307
}
308
+ let isIframesSame = false
289
309
for ( const k of Object . keys ( oCompare ) ) {
290
310
let isValid = true , data = oCompare [ k ]
291
- notation = k == 1 ? sizes_red : window_red
292
- let target = k == 1 ? "screen_size_matches_inner" : "window_sizes_initial"
293
- for ( let i = 0 ; i < 4 ; i ++ ) { if ( "number" !== typeFn ( data [ i ] ) ) { isValid = false ; break } }
311
+ notation = data [ 0 ]
312
+ for ( let i = 2 ; i < oCompare [ k ] . length ; i ++ ) { if ( "number" !== typeFn ( data [ i ] ) ) { isValid = false ; break } }
294
313
if ( isValid ) {
295
- if ( data [ 0 ] + "" + data [ 1 ] === data [ 2 ] + "" + data [ 3 ] ) { notation = k == 1 ? sizes_green : window_green }
314
+ let isGood = false
315
+ let test1 = data [ 2 ] + '' + data [ 3 ] , test2 = data [ 4 ] + '' + data [ 5 ]
316
+ if ( 'iframe_sizes_match_inner' == k ) {
317
+ let test3 = data [ 6 ] + '' + data [ 7 ]
318
+ if ( test1 === test2 && test1 == test3 ) {
319
+ isIframesSame = true
320
+ if ( test1 === oWindow . innerWidth + '' + oWindow . innerHeight ) { isGood = true }
321
+ }
322
+ } else {
323
+ if ( test1 === test2 ) { isGood = true }
324
+ }
325
+ if ( isGood ) { notation = data [ 1 ] }
296
326
}
297
- addDisplay ( 1 , target , '' , '' , notation )
327
+ addDisplay ( 1 , k , '' , '' , notation )
298
328
}
299
329
// ToDo: screen_sizes (_match)
300
330
// ToDo: window_sizes (_match)
301
331
332
+ //addDisplay(1, 'iframe_sizes_match_inner','','', isizes_red)
333
+
302
334
// simple health lookups
303
335
if ( gRun ) {
304
- let strInner = tmpWindow . innerWidth + ' x ' + tmpWindow . innerHeight
305
- let strScreen = tmpScreen [ 'device-width' ] + ' x ' + tmpScreen [ 'device-height' ]
336
+ let strInner = oTmp . window . innerWidth + ' x ' + oTmp . window . innerHeight
337
+ let strScreen = oTmp . screen [ 'device-width' ] + ' x ' + oTmp . screen [ 'device-height' ]
306
338
let scrMatch = strInner == strScreen ? strInner : 'inner: ' + strInner + ' | screen: ' + strScreen
307
339
let initInner = isInitial . innerWidth + " x " + isInitial . innerHeight
308
340
let initOuter = isInitial . outerWidth + " x " + isInitial . outerHeight
309
341
let initMatch = initInner == initOuter ? initInner : 'inner: ' + initInner + ' | outer: ' + initOuter
342
+ let iframeMatch = "available: " + oTmp . iframe . availWidth + " x " + oTmp . iframe . availHeight
343
+ + " | screen: " + oTmp . iframe . width + " x " + oTmp . iframe . height
344
+ + " | outer: " + oTmp . iframe . outerWidth + " x " + oTmp . window . outerHeight
345
+ if ( isIframesSame ) { iframeMatch = oTmp . iframe . availWidth + " x " + oTmp . iframe . availHeight }
346
+
347
+ sDetail [ isScope ] . lookup [ 'iframe_sizes_match_inner' ] = iframeMatch
310
348
sDetail [ isScope ] . lookup [ 'screen_size_matches_inner' ] = scrMatch
311
349
sDetail [ isScope ] . lookup [ 'window_letterbox' ] = strInner
312
350
sDetail [ isScope ] . lookup [ 'window_newwin' ] = strInner
@@ -316,6 +354,7 @@ const get_scr_measure = () => new Promise(resolve => {
316
354
for ( const k of Object . keys ( oDisplay ) ) { addDisplay ( 1 , k , oDisplay [ k ] ) }
317
355
addData ( 1 , "screen_sizes" , oScreen , mini ( oScreen ) )
318
356
addData ( 1 , "window_sizes" , oWindow , mini ( oWindow ) )
357
+ addData ( 1 , "iframe_sizes" , oIframe , mini ( oIframe ) )
319
358
addData ( 1 , "window_sizes_initial" , initData , initHash )
320
359
return resolve ( )
321
360
} )
0 commit comments