چطور بفهمیم صفحه وب داخل آی فریم است یا خیر؟

چطور بفهمیم صفحه وب داخل آی فریم هست

برای دونستن این که یه صفحه وب داخل آی فریم بارگذاری شده یا مرورگر، میتونیم از کد جاوا اسکریپت زیر استفاده کنیم:

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('داخل آی فریم نیستیم');
}

منابع:


کامنت ها