This repository was archived by the owner on Jan 31, 2025. It is now read-only.
File tree 1 file changed +49
-4
lines changed
1 file changed +49
-4
lines changed Original file line number Diff line number Diff line change @@ -40,6 +40,47 @@ export function isSameDomain(win) {
40
40
return match ;
41
41
}
42
42
43
+ export function isWindow ( item ) {
44
+
45
+ if ( ! item ) {
46
+ return false ;
47
+ }
48
+
49
+ try {
50
+
51
+ for ( let key of [ 'setTimeout' , 'setInterval' , 'postMessage' , 'alert' ] ) {
52
+ if ( typeof item [ key ] !== 'function' ) {
53
+ return false ;
54
+ }
55
+ }
56
+
57
+ if ( ! item . document || ! item . location ) {
58
+ return false ;
59
+ }
60
+
61
+ return true ;
62
+
63
+ } catch ( err ) {
64
+ // pass
65
+ }
66
+
67
+ try {
68
+
69
+ for ( let i = 0 ; i < 5 ; i ++ ) {
70
+ if ( item ) {
71
+ item = item [ Math . random ( ) . toString ( ) ] ;
72
+ }
73
+ }
74
+
75
+ return false ;
76
+
77
+ } catch ( err ) {
78
+
79
+ return true ;
80
+ }
81
+ }
82
+
83
+
43
84
export function isWindowClosed ( win ) {
44
85
45
86
try {
@@ -280,7 +321,7 @@ export function getFrameByName(win, name) {
280
321
281
322
for ( let childFrame of getFrames ( win ) ) {
282
323
try {
283
- if ( childFrame . name === name ) {
324
+ if ( childFrame . name === name && isWindow ( childFrame ) ) {
284
325
return childFrame ;
285
326
}
286
327
} catch ( err ) {
@@ -289,13 +330,17 @@ export function getFrameByName(win, name) {
289
330
}
290
331
291
332
try {
292
- return win . frames [ name ] ;
333
+ if ( isWindow ( win . frames [ name ] ) ) {
334
+ return win . frames [ name ] ;
335
+ }
293
336
} catch ( err ) {
294
337
// pass
295
338
}
296
339
297
340
try {
298
- return win [ name ] ;
341
+ if ( isWindow ( win [ name ] ) ) {
342
+ return win [ name ] ;
343
+ }
299
344
} catch ( err ) {
300
345
// pass
301
346
}
@@ -437,4 +482,4 @@ export function isSameTopWindow(win1, win2) {
437
482
if ( opener2 && anyMatch ( getAllFramesInWindow ( opener2 ) , allFrames1 ) ) {
438
483
return false ;
439
484
}
440
- }
485
+ }
You can’t perform that action at this time.
0 commit comments