Firefox испытывает проблемы с загрузкой iFrame - PullRequest
2 голосов
/ 25 января 2010

У меня странная проблема с Firefox и загрузкой PDF в iframe. Вот что делают страницы. - Выберите элемент из выпадающего списка - Загрузить PDF внутри iframe на основе выбора.

Все остальные браузеры работают нормально, кроме FF. При выборе пункта для загрузки статуса в левом нижнем углу отображается надпись «ОСТАНОВЛЕНО». Я запустил Firebug, и нет никаких действий HTTP. Как будто все останавливается.

Вот подвох. Когда я открываю окно DIV, я могу загрузить PDF в FF, сделав выбор в раскрывающемся списке. Как только я закрываю div, он не загружается.

Вот jQuery для загрузки PDF

<script type="text/javascript">
    $(document).ready(function() {
        $("#<%= ddlSpecialty.ClientID %>").change(function() { 
            var selected = $("#<%= ddlSpecialty.ClientID %> option:selected");    
            var speciality = selected.text();
            switch (speciality) {
                case 'Cardiology': 
                    window.open('./../PDF/SpecialityGuidelines/SPECIALTY-cardiology.pdf','Specialtyframe');
                    break;
                ; 
                case 'Neurology': 
                    window.open('./../PDF/SpecialityGuidelines/SPECIALTY-Neurology.pdf','Specialtyframe');
                    break; 
                ; 
                case '-- Select Specialty --': 
                    window.open('Specialty.html','Specialtyframe');
                    break; 
                ; 
           }


        });
    });

</script>

<div id="Clean_ContentPlaceHolder1_c2_flyout_content" style="display:none;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;"> 
                <div class="modalcontainer" style="width: 700px;"> 
                    <div class="modalheader"> 
                        <span id="Clean_ContentPlaceHolder1_c2_flyout_Label3" class="modalmsg">Specialty PDF</span> 
                        <img class="modalclose" alt="Close" title="Close" onclick="Clean_ContentPlaceHolder1_c2_flyoutimgPDF.Close();" style="cursor: pointer;" /> 
                    </div> 
                    <div class="modalbody" style="height: 500px;"> 
                        <table width="100%" cellpadding="5" cellspacing="0"> 
                            <tr> 
                                <td> 
                                    <iframe id="Specialtyframe" name="Specialtyframe" frameborder="0" width="650px" height="500px" src="Specialty.html"> 
                                        [Your browser does <em>not</em> support <code>iframe</code>, or has been 
                                        configured not to display inline frames. You can access <a href="../PDF/SpecialityGuidelines/SPECIALTY-Cardiology.pdf">
                                            the document</a> via a link though.]
                                    </iframe> 
                                </td> 
                            </tr> 
                        </table> 
                    </div> 
                </div> 
            </div>
    <div id="Clean_ContentPlaceHolder1_c2_flyout_contentbox"></div> 

Есть идеи?

Ответы [ 4 ]

1 голос
/ 03 февраля 2010

Интересный подход. Почему бы вам не попробовать просто манипулировать атрибутом src вашего iframe, как это делается?

<script type="text/javascript">
    $(document).ready(function() {
        $("#<%= ddlSpecialty.ClientID %>").change(function() { 
            var selected = $("#<%= ddlSpecialty.ClientID %> option:selected");    
            var speciality = selected.text();
            switch (speciality) {
                case 'Cardiology': 
                    $('#Specialtyframe').attr('src','./../PDF/SpecialityGuidelines/SPECIALTY-cardiology.pdf');
                    break;
                ; 
                case 'Neurology': 
                    $('#Specialtyframe').attr('src','./../PDF/SpecialityGuidelines/SPECIALTY-Neurology.pdf');
                    break; 
                ; 
                case '-- Select Specialty --': 
                    $('#Specialtyframe').attr('src','Specialty.html');
                    break; 
                ; 
           }


        });
    });

</script>

Трудно понять, сработает ли это, если ваш нерабочий код не будет размещен где-то в качестве "рабочего" примера; но попробуй. Может быть, вы могли бы опубликовать пример где-нибудь, чтобы мы могли взглянуть на него?

1 голос
/ 04 февраля 2010

Хорошо, я перенес твой код на свою машину и опробовал его, и он отлично работает для меня в FF 3.5.7. Я думаю, что происходит то, что у вас установлен какой-то аддон, который мешает тому, что вы пытаетесь сделать.

На вашем месте я бы начал отключать все свои дополнения, перезапустить Firefox и посмотреть, работает ли это. Если это произойдет, начните снова включать свои дополнения, пока ваше приложение не выйдет из строя, и тогда вы по крайней мере узнаете, какое дополнение вызывает проблему.

Также отметьте Tools > Options > Applications и проверьте, какие PDF-файлы открыты для открытия. Мой установлен на открытие в Acrobat вне браузера, что означает, что ваш скрипт не сработал для меня сразу; Я должен был установить FF, чтобы открыть его в браузере, чтобы он работал.

0 голосов
/ 05 февраля 2010

Способ загрузки PDF-файла в браузер (по умолчанию или без) будет зависеть от:

  • установленный клиент PDF (ADOBE PDF reader, SumatraPDF и т. Д.)
  • версия этого
  • браузер,
  • конфигурация, которую выбрал пользователь (некоторые выбирают, чтобы открыть в браузере, другие предлагают загрузить).

Предлагаю вам решить проблему с другой точки зрения:

1. Использование Google Docs PDF reader внутри IFRAME

// as easy as:  
$('#Specialtyframe').attr('src', 'http://docs.google.com/viewer?url=http://yourdomain.com/PDF/SpecialityGuidelines/SPECIALTY-cardiology.pdf');

Также проверьте этот ТАК вопрос

2. Преобразование PDF в плоские изображения для предварительного просмотра

В прошлом я использовал этот подход для отображения эскизов PDF.
В моем случае я использовал ABCpdf (бесплатно с лицензией на ссылку)

Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../PDF/SpecialityGuidelines/SPECIALTY-cardiology.pdf"));

theDoc.Rendering.DotsPerInch = 36;

for (int i = 0; i < theDoc.PageCount; i++) {
  theDoc.PageNumber = i;
  theDoc.Rect.String = theDoc.CropBox.String;
  theDoc.Rendering.Save(Server.MapPath("cardio_p" + i.ToString() +".png"));
}

, а затем используйте изображение для предварительного просмотра и предложите возможность загрузить PDF.

0 голосов
/ 31 января 2010

Я думаю, что ваша проблема со свойствами ширины и высоты в вашем фрейме. Когда в HTML не добавляйте «px» к значениям ширины и высоты, добавляйте их только в CSS.

<iframe id="Specialtyframe" name="Specialtyframe" frameborder="0" width="650px" height="500px" src="Specialty.html">

Изменить на

<iframe id="Specialtyframe" name="Specialtyframe" frameborder="0" width="650" height="500" src="Specialty.html">

Попробуйте, возможно, решите вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...