Nasıl belge üzerinde tüm iç içe iframe alınır?

oy
0

Birçok ilgili sorular gördük ama bu dupe ise bunların hiçbiri bir benim için çalıştı çözüm, bu yüzden özür vardı.

Aşağıdaki HTML yapısını (basitleştirilmiş) sahiptir:

<html>
<head>
</head>
<body style=>
    <div>
        <div>
            <div>
                <iframe>
                    <html>
                        <head></head>
                        <body>
                            <div></div>
                            <iframe>
                                <html>
                                    <head></head>
                                    <body>
                                        <div>
                                            <iframe src=about:blank>
                                                <html>
                                                    <head></head>
                                                    <body>
                                                        <img />
                                                        <iframe id=some_random_id>
                                                            <html>
                                                                <head></head>
                                                                <body>
                                                                    <div>
                                                                        <!-- main content -->
                                                                    </div>
                                                                </body>
                                                            </html>
                                                        </iframe>
                                                    </body>
                                                </html>
                                            </iframe>
                                        </div>
                                    </body>
                                </html>
                            </iframe>
                        </body>
                    </html>
                </iframe>
            </div>
        </div>
    </div>
</body>
</html>

Ve ideal bir dizideki tüm iframe almak istiyorum. Ben aşağıdaki denedim:

document.getElementsByTagName('iframe')

Ancak bu boyut 1 bir dizi döndürür: [iframe]

window.frames.length ver 1

Ben böyle bir şey yapmayı düşündün:

var a = document.getElementsByTagName('iframe')[0]
var b = a.getElementsByTagName('iframe')[0] 
// b is undefined
var b = a.contentDocument.getElementsByTagName('iframe')[0]
// b is undefined

Sayfadaki tüm iframe almak için herhangi bir yolu var mı? Alternatif olarak, sonuncuyu (kimlikli biri alma some_random_idolduğu gibi iyi çalışır) ancak ben html bir üçüncü taraf tarafından oluşturulan beri seçmek için id kullanamazsınız.

Düzenleme: Ben soru kopyası olduğunu düşünmüyorum iFrames bir sayfada document.getElementsByTagName kullanarak - iframe içinde elementler aldı edilmiyor , çünkü bu soru kullanımda kabul cevap:

for( j=0; j<m; j++) {
    ...
} 

Nerede molduğunu document.getElementsByTagName('iframe').length. Ama benim durumumda bu değere sahip olacaktır 1ve böylece ben İç içe iframe'lerden erişemedi.

Oluştur 08/11/2018 saat 11:36
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Kullanıyorsunuz <iframe>kesinlikle yanlış etiketi! Sen gelen belgeleri okumak istiyorum <iframe>etiketi :

İzin verilen içerik: Yedek içerik, normalde oluşturulmamışsa yani içeriği, ama bu desteklemeyen tarayıcılar <iframe>eleman hale getirecek.

Başka bir deyişle arasındaki içerik <iframe>ve </iframe>tarayıcı desteği yoksa etiketleri, işlenecek <iframe>elemanı.

Kullanılacak iki ihtimal vardır <iframe>etiketi:

  1. In srcden özniteliği <iframe>etiketi HTML dosyası için bir yol yazabilirim.
  2. In srcden özniteliği <iframe>etiketi yazabilirsiniz "about:blank"Bu içerik eklemek olabilir JS kullanarak sonra ve <iframe>.

Eğer bazı öğeleri bulmak veya içeriği işlemek istiyorsanız bu aşağıdaki kodu kullanabilirsiniz iframe'lerin dan:

var iframe = document.getElementById('iframeId'),
    innerDoc = iframe.contentDocument ? iframe.contentDocument 
             : iframe.contentWindow.document;

Sen aşağıdaki konularda bir erişime sahip olduğundan emin olmalıdır <iframe>.
Lütfen okuyun Çapraz kökenli kaynak paylaşımı (CORS) bu konuda makale.

Eğer belge üzerinde tüm iç içe iframe'lerde sayısını elde etmek istiyorsanız her biri için onu bulmak zorunda <iframe>separatelly ve global iframe sayımı değişkene bu sayıyı ekleyin. Ve CORS (yukarıya bakınız) hakkında unutma.

Cevap 08/11/2018 saat 16:31
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more