if (top.location!= self.location) ( top.location = self.location.href; )
Điều đó nói chung sẽ hiệu quả, nhưng có một chút khả năng thất bại trong trường hợp window
bị ghi đè. Dưới đây là một số lựa chọn thay thế thông minh từ Nathan Smith:
// 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);