چطور بفهمیم صفحه وب داخل آی فریم است یا خیر؟
منبع: https://rasanika.com
برای دونستن این که یه صفحه وب داخل آی فریم بارگذاری شده یا مرورگر، میتونیم از کد جاوا اسکریپت زیر استفاده کنیم:
window.self !== window.parent // یا window.self !== window.top
آبجکت window.self
خود صفحه رو بر میگردونه و آبجکت window.parent
هم صفحه مادر یا parent این صفحه رو بر میگردونه. ولی وقتی داخل هیچ آی فریمی نباشیم window.parent
بجای صفحه مادر، خود صفحه رو بر می گردونه. پس اگه این دوتا آبجکت یکی باشند یعنی داخل هیچ آی فریمی نیستیم.
همچنین بجای window.parent
میتونیم از window.top
هم استفاده کنیم. وقتی داخل آی فریم های تو در تو هستیم top بالاترین صفحه رو بر میگردونه و اگه داخل هیچ آی فریمی نباشیم مقدارش برابر همون self میشه.
نکته: وقتی دامنه آی فریم با دامنه صفحه ای که توش هستیم فرق داره ممکنه موقع دسترسی به آبجکت های window.parent
یا window.top
مرورگر خطای cross-origin بده پس کد کامل رو میتونیم به این صورت بنویسیم:
function isInIframe () {
try {
return window.self !== window.parent;
} catch (e) {
return true;
}
}
// استفاده به این صورت:
if(isInIframe()) {
console.log('داخل آی فریم هستیم');
} else {
console.log('داخل آی فریم نیستیم');
}
منابع: