if (top.location!= self.location) ( top.location = self.location.href; )
Обычно это срабатывает, но в случае window
отмены есть небольшая вероятность отказа . Вот пара умных альтернатив от Натана Смита:
// Break out of an iframe, if someone shoves your site // into one of those silly top-bar URL shortener things. // // Passing `this` and re-aliasing as `window` ensures // that the window object hasn't been overwritten. // // Example: // var window = 'haha, punked!'; // // Note: Probably unnecessary, but just for kicks. (function(window) ( if (window.location !== window.top.location) ( window.top.location = window.location; ) ))(this);
// A more cryptic one-liner, to awe & impress. // // No need to protect `window` since `this` is // immutable, and at the topmost level means // `window` anyways. Here, we compare locations // on the left side of the "&&" and execute the // code in parenthesis if that condition is // true (top location isn't iframe location). // // Otherwise, nothing happens. It's basically an // if statement without wrapping curly brackets. // // Weird, I know. But pretty cool, right? :) this.top.location !== this.location && (this.top.location = this.location);