So the following code alerts false twice:
window.onload = function(){
alert(window.myframe.myarray instanceof Array);
alert(window.myframe.myarray.constructor === Array);
}
When there's an iframe in the page named "myframe" that has contains an array called "myarray". If the array is moved into the main page (as opposed to the iframe), then the code alerts true twice as expected. Does anyone know why this is?
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
Long explanation here about why .constructor
fails with frames.
The problems arise when it comes to scripting in multi-frame DOM environments. In a nutshell, Array objects created within one iframe do not share [[Prototype]]’s with arrays created within another iframe. Their constructors are different objects and so both instanceof and constructor checks fail:
The two windows each create their own global script environment.
The Array constructor of one is not the same object as the other.
var win2=window.myframe;
alert(win2.myarray instanceof win2.Array); returns true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With