24

ASP.NET'te iframe'leri kullanan çok eksiksiz bir site var. JQuery UI iletişim kutularını kullanmak için diyalogları göstermek için kullandığımız eski bir kontrolü değiştirmek için çalışıyorum. Ayrıca her şeyin IE9'da iyi çalıştığından emin oluyorum.IE9 iframes içinde Javascript kodu çalışmıyor

Gerçek şu ki: iframe'de gösterilen sayfalarda gördüğüm komut dosyası IE9'da çalışmıyor. Niye ya? Nesne, dizi ve dize tanımsız olduğundan. Diğer bazı sorunlar olabilir, sadece bunları gördüm.

Bazı iletişim kutularında iframe'leri kullanmayı bırakma şansı yoktur (bir çok sebepten dolayı). Ve IE8 Compability'i zorlamak için meta etiketini kullanmamayı tercih ediyorum. IE9'da bu uggly hatayı düzeltmek için herhangi bir yol biliyor mu? Bir eklenti Iframe için

jQuery kod jQuery UI iletişim yapılandırma için yaptık::

sayesinde Diego

Düzenleme

İşte helfull olabilecek bazı bilgiler var

options.content = $("<iframe>") 
    .attr("src", options.intSrcIframe) 
    .attr("frameborder", 0) 
    .attr("scrolling", options.intIframeScrolling) 
    .css("background-color", options.intBgColorIframe) 
    .attr("height", "100%") 
    .attr("width", "100%"); 

_this.html(options.content); 
+0

Tanımlanmamış olduklarını nereden biliyorsunuz? –

+0

iframe'i nasıl başlattığınıza dair örnek bir kod verebilir misiniz? Örneğin iframe'de jQuery yüklüyor musunuz? –

+0

@ Šime Vidas: Bu değişiklikler henüz uygulanmadığından siteyi görsel seslerden alıyorum. – Diego

cevap

26

Not: here Anlamakta yardımcı olabilecek bazı belgeler vardır. Paylaşmak için @Ben Amada'ya teşekkürler.


Günden neredeyse bir hafta sonra çıldırdıktan sonra onu buldum.

IE9 ile ilgili sorun, iframe'lerde özel olarak javascript koduyla ilgilidir. Javascript veya herhangi bir kütüphane tarafından eklenen iframe'deki javascript ile bile değil (IE9'u bozabilecek çok sayıda js kütüphanesi ve eklentisi var).

Sorun şu ki, iframe veya bir atayı DOM yoluyla taşıdığınızda. IE9, iframe'de yüklenen sayfadaki kodu, yaptığınız hamle olarak defalarca tekrar edecektir. Her seferinde (ancak sonuncusu) Object, String, Array ve diğerleri undefined (ve diğer hatalar da) olacaktır.

Örnek:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe"); 
iframe.appendTo("body"); 
$("#myIframe").appendTo("form:eq(0)"); 

JavaScript kodu içinde "www.example.com" hatasız bir kez daha sonra, yukarıda tarif edilen hata ile bir kez gerçekleştirilir ve edilecektir. kod yalnızca bir kez ve doğru excecuted edilecektir aşağıdaki kod ile

:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe"); 
iframe.appendTo("form:eq(0)"); 

Bu kimse kıçından bu acıyı önlemek için yardımcı olur,

Diego

+1

Bu analiz için teşekkürler. Bu konuda tam olarak web sitemde çalışmak üzereydim ve bu çok yardımcı olacak. –

+2

@Elian Ebbing: Rica ederim. Bu yardımcı oldu sevindim! – Diego

+0

Teşekkürler, aynı sorun vardı. Bana çok fazla hayal kırıklığı kurtardın. –

3

bir yoktur Yeni bir eleman oluşturmamanız durumunda mevcut bir iframe kullanarak bunu elde etmenin benzer bir yolu. Bu sorunu gidermek için IE9 veya jquery framework'ün ihtiyacı vardır.

0

Benzer bir sorun yaşıyorum, ancak iframe, sayfadan kaldırılmak yerine sayfaya eklenir. Hala aynı sorunlara sahip gibi görünüyor.

+1

DOM'a eklendikten sonra önceden ayarlanmış kaynak mı? DOM'de bir kez taşındı mı? Evet ise, kaçınmaya çalışın. Ayrıca: Bu bir cevap olmalı mı? – Diego

+0

Kaynak, hiçbir zaman bir sayfa gönderiminin hedefi olmak için kullanılan iframe olarak ayarlanmadı. –

+0

Bana böyle bir şey geldi mi hatırlayamıyorum (çok uzun zaman önceydi). – Diego