Câu trả lời:
Tôi tìm thấy giải pháp tốt nhất là sử dụng thẻ cơ sở . Thêm phần sau vào phần đầu của trang trong iframe:
<base target="_parent">
Điều này sẽ tải tất cả các liên kết trên trang trong cửa sổ cha. Nếu bạn muốn các liên kết của mình tải trong một cửa sổ mới, hãy sử dụng:
<base target="_blank">
Thẻ này được hỗ trợ đầy đủ trong tất cả các trình duyệt.
<base target>
nên đến trước bất kỳ <a href>
, vì nó đặt bối cảnh duyệt mặc định cho các liên kết sau; <base href>
phải đến trước bất kỳ tham chiếu URL nào ( <* href>
<* src>
<form action>
<object data>
Thẻ) vì nó đặt URL cơ sở dựa vào đó các URL tương đối được giải quyết.
<base
thẻ không đóng theo thông số w3.org/TR/html5/document-metadata#the-base-element vì vậy nó phải là<base target="_parent" >
Sử dụng thuộc tính đích:
<a target="_parent" href="http://url.org">link</a>
<base target="_blank">
không sao, nhưng câu hỏi ở đây là về một liên kết, không phải về việc thay đổi hành vi của tất cả các liên kết trên iframe. Đối với tôi đây là câu trả lời chính xác.
Bạn có thể sử dụng bất kỳ tùy chọn
trong trường hợp chỉ có trang cha mẹ:
nếu bạn muốn mở tất cả liên kết vào trang mẹ hoặc iframe cha, thì bạn sử dụng mã sau trong phần đầu của iframe:
<base target="_parent" />
HOẶC LÀ
nếu bạn muốn mở một liên kết cụ thể vào trang mẹ hoặc iframe cha, thì bạn sử dụng cách sau:
<a target="_parent" href="http://specific.org">specific Link</a>
<a href="http://normal.org">Normal Link</a>
HOẶC LÀ
trong trường hợp iframe lồng nhau:
Nếu muốn mở tất cả liên kết vào cửa sổ trình duyệt (chuyển hướng trong url của trình duyệt), thì bạn sử dụng mã sau trong phần đầu của iframe:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
$(window).load(function(){
$("a").click(function(){
top.window.location.href=$(this).attr("href");
return true;
})
})
</script>
HOẶC LÀ
nếu bạn muốn mở một liên kết cụ thể vào cửa sổ trình duyệt (chuyển hướng trong url của trình duyệt), thì bạn sử dụng cách sau:
<a href="http://specific.org" target="_top" >specific Link</a>
hoặc là
<a href="javascript:top.window.location.href='your_link'">specific Link</a>
<a href="javascript:top.window.location.href='http://specific.org'">specific Link</a>
<a href="http://normal.org">Normal Link</a>
Có một phần tử HTML được gọi là base
cho phép bạn:
Chỉ định URL mặc định và mục tiêu mặc định cho tất cả các liên kết trên một trang:
<base target="_blank" />
Bằng cách chỉ định, _blank
bạn đảm bảo tất cả các liên kết bên trong iframe sẽ được mở bên ngoài.
Như đã lưu ý, bạn có thể sử dụng một thuộc tính đích, nhưng nó bị phản đối về mặt kỹ thuật trong XHTML. Điều đó khiến bạn sử dụng javascript, thường là như thế parent.window.location
.
Nếu bạn đang sử dụng iframe trong trang web của mình, bạn có thể gặp sự cố trong khi thay đổi toàn bộ trang thông qua siêu liên kết HTML (thẻ neo) từ iframe. Có hai giải pháp để giảm thiểu vấn đề này.
Giải pháp 1. Bạn có thể sử dụng thuộc tính đích của thẻ neo như trong ví dụ sau.
<a target="_parent" href="http://www.kriblog.com">link</a>
Giải pháp 2. Bạn cũng có thể mở một trang mới trong cửa sổ cha từ iframe bằng JavaScript.
<a href="#" onclick="window.parent.location.href='http://www.kriblog.com';">
Hãy nhớ target="_parent"
đã bị phản đối trong XHTML, nhưng nó vẫn được hỗ trợ trong HTML 5.x.
Có thể đọc thêm từ liên kết sau http://www.kriblog.com/html/link-of-iframe-open-in-the-parent-window.html
Giải pháp linh hoạt nhất và đa trình duyệt nhất là tránh sử dụng thẻ "cơ sở" và thay vào đó sử dụng thuộc tính đích của thẻ "a":
<a target="_parent" href="http://www.stackoverflow.com">Stack Overflow</a>
Các <base>
thẻ ít linh hoạt và các trình duyệt chưa phù hợp về yêu cầu của họ đối với vị trí của nó trong tài liệu, đòi hỏi nhiều thử nghiệm qua trình duyệt. Tùy thuộc vào dự án và tình huống của bạn, có thể khó hoặc thậm chí hoàn toàn không khả thi để đạt được vị trí trình duyệt chéo lý tưởng của <base>
thẻ.
Làm điều này với target="_parent"
thuộc tính của <a>
thẻ không chỉ thân thiện với trình duyệt hơn mà còn cho phép bạn phân biệt giữa các liên kết bạn muốn mở trong iframe và các liên kết bạn muốn mở trong phần gốc.
Tôi đã tìm thấy
<base target="_parent" />
Điều này hữu ích để mở tất cả các liên kết iframe mở trong iframe.
Và
$(window).load(function(){
$("a").click(function(){
top.window.location.href=$(this).attr("href");
return true;
})
})
Điều này chúng ta có thể sử dụng cho toàn bộ trang hoặc một phần cụ thể của trang.
Cảm ơn tất cả vì sự giúp đỡ của bạn.
Thử target="_top"
<a href="http://example.com" target="_top">
This link will open in same but parent window of iframe.
</a>
"_top"
giống như "_parent"
?