Cách buộc liên kết từ iframe được mở trong cửa sổ cha


Câu trả lời:


617

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.


4
Làm thế nào để giá vé này qua trình duyệt?
Charlie Schliesser

3
@Wilf Tôi không hoàn toàn chính xác :;) <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.
sam

5
Tại sao bạn trả lời câu hỏi này một năm sau khi tôi trả lời nó, với cùng một câu trả lời? nhưng bạn đã được chọn. điều này thật lạ
vsync

5
Tôi nghĩ đó là vì câu trả lời của bạn mở liên kết trong một cửa sổ mới, trong khi câu trả lời của tôi mở nó trong cửa sổ cha của iframe, đó là câu hỏi ban đầu. Xin lỗi để đánh cắp sấm sét của bạn!
Chris Vasselli

1
Lưu ý rằng <basethẻ 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" >
Mark Schultheiss

147

Sử dụng thuộc tính đích:

<a target="_parent" href="http://url.org">link</a>

1
tôi thử cái này, đang mở trong cửa sổ mới
Haim Evgi

3
+1 từ tôi, mục tiêu cơ bản = "_ cha mẹ" hoạt động nhưng mục tiêu = "_ cha mẹ" chưa bao giờ thất bại đối với tôi!

7
<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.
kriskodzi 4/2/2015

34

Với JavaScript:

window.parent.location.href= "http://www.google.com";

28

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>

1
Câu trả lời hay, tôi chỉ cần sử dụng điều này cho một liên kết cụ thể, nhưng câu trả lời được chấp nhận chỉ mô tả cách thay đổi mục tiêu cho tất cả các liên kết trên trang. Cảm ơn
dading84

15

Có một phần tử HTML được gọi là basecho 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, _blankbạn đảm bảo tất cả các liên kết bên trong iframe sẽ được mở bên ngoài.


điều này được thừa hưởng trong iframe lồng nhau?
beppe9000

7

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.



@ PaulD.Cho liên kết bạn đã đăng bây giờ 404s.
Dan Loewenherz

1
@Dan: aha, vâng cảm ơn bạn. Liên kết mới: dev.w3.org/html5/spec/ từ
Paul D.

7

Hãy thử target="_parent" thuộc tính bên trong anchor tag.


tôi thử cái này, đang mở trong cửa sổ mới
Haim Evgi

4
Hãy thử mục tiêu = "_ top". Khung nội tuyến có thể chứa iframe lồng nhau? Hoặc liên kết thực tế được mở bằng javascript trên sự kiện onclick?
Gee

5

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


4

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.


3

<a target="parent">sẽ mở các liên kết trong một tab / cửa sổ mới ... <a target="_parent">sẽ mở các liên kết trong cửa sổ cha / hiện tại mà không cần mở các tab / cửa sổ mới. Đừng_forget_that_underscore!


2

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.

$(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.


1

Thử target="_top"

<a href="http://example.com" target="_top">
   This link will open in same but parent window of iframe.
</a>

không "_top"giống như "_parent"?
siagiag

0
   <script type="text/javascript"> // if site open in iframe then redirect to main site
        $(function(){
             if(window.top.location != window.self.location)
             {
                top.window.location.href = window.self.location;
             }
        });
    </script>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.