@selfcommunity/utils
Version:
Utilities to integrate a Community.
36 lines (35 loc) • 1.2 kB
JavaScript
export function getWindowWidth() {
return typeof global.window !== 'undefined' ? global.window.innerWidth : 0;
}
export function getWindowHeight() {
return typeof global.window !== 'undefined' ? global.window.innerHeight : 0;
}
const isCrossOriginFrame = () => {
try {
return global.window.location.hostname !== global.window.parent.location.hostname;
}
catch (e) {
return true;
}
};
// Get the highest window context that isn't cross-origin
// (When in an iframe)
export function getHighestSafeWindowContext(self = global.window.self) {
// If we reached the top level, return self
if (self === global.window.top) {
return self;
}
// If parent is the same origin, we can move up one context
// Reference: https://stackoverflow.com/a/21965342/1601953
if (!isCrossOriginFrame()) {
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore
return getHighestSafeWindowContext(self.parent);
}
// If a different origin, we consider the current level
// as the top reachable one
return self;
}
export function isClientSideRendering() {
return typeof window !== 'undefined';
}