2012-02-12 23 views
5

Điều này có vẻ trái ngược với một câu hỏi phổ biến, có nghĩa là tôi có thể thiếu điều gì đó hiển nhiên.Khi ai đó nhấp vào liên kết trong khung nội tuyến, điều hướng toàn bộ cửa sổ

Tôi có một ứng dụng nhỏ hiển thị một số trang khác (từ một tên miền khác) bên trong iframe, với tiêu đề của tôi ở trên cùng. Càng xa càng tốt. Nhưng khi ai đó nhấp vào liên kết trên trang bên trong đó, nó chỉ điều hướng iframe - tôi muốn nó điều hướng trang toàn bộ thay thế (bao gồm và đặc biệt là cập nhật URL trong thanh URL).

Điều này về cơ bản là ngược lại với việc nhấp chuột. Tôi chỉ muốn điều hướng hoạt động như thể đó không phải là khung nội tuyến. Có đường nào dễ đi không?

Trả lời

4

Nếu nội dung của nằm trong một miền khác, bạn không thể thực hiện điều đó vì lý do bảo mật.
Nếu bạn có quyền truy cập vào tên miền và html mã khác bạn có thể làm một cái gì đó như thế này vào đường dẫn:

href="javascript:parent.window.location.href='http:/google.com' 
+0

phương pháp này có thể khiến khung nội tuyến hiển thị tin nhắn văn bản có liên kết href. Câu trả lời hay hơn là target = '_ parent' – orberkov

1

này vi phạm chính sách gốc cùng tên miền nếu bạn không kiểm soát cả hai trang web trong và ngoài số iframe.

Hãy tưởng tượng bạn đặt ngân hàng của người dùng bên trong iframe. Nếu bạn có thể đăng ký trình xử lý sự kiện cho mọi thứ bên trong khung (từ bên ngoài), bạn có thể ghi lại số tài khoản ngân hàng của người dùng, xem những thứ họ nhấp vào cho mục đích quảng cáo, chuyển hướng họ khi họ thực hiện một số hành động bạn không thích. Và khung hình sẽ hiển thị như một kết nối bảo mật cho ngân hàng của họ!

Nếu đó là trang web của bạn trong khung, có thể, thông qua giao trạng thái thông qua máy chủ hoặc với tiêu chuẩn mới (ish) HTML5 Web Messaging hoặc bằng cách thao tác parent.window từ bên trong khung.

+0

Tôi hiểu rằng tôi không thể làm được nhiều thứ vì lý do bảo mật, nhưng có vẻ thực sự bí ẩn khi chỉ cho phép "phá khung" nếu trang web bên trong yêu cầu một cách rõ ràng. – apenwarr

+0

@apenwarr Thật dễ dàng để người dùng truy cập trang web độc hại. Bạn không muốn trang web độc hại có thể "thúc đẩy" trang web của bên thứ ba vô tội - đó là một hình thức XSS. – Borealid

+0

Tôi không cố gắng thúc đẩy bất kỳ thứ gì - tôi chỉ muốn * trang * của tôi biến mất. Nếu tôi có thể tải một trang có khả năng độc hại trong khung nội tuyến, sẽ không nguy hiểm hơn cho trang đó là trang gốc thay vì một trang lồng nhau. – apenwarr

3

Nội dung trong khung nội tuyến có thể sửa đổi mục tiêu của liên kết: sử dụng _parent hoặc _top.

<a href='#aboutus' target='_parent'>About Us</a> 
Các vấn đề liên quan