2010-01-25 112 views
2

我在Firefox中遇到了一個奇怪的問題,並且在iframe中加載了PDF。這是網頁的功能。 - 從下拉列表中選擇一個項目 - 根據所選內容將iframe加載到iframe中。Firefox在加載iframe時遇到問題

除FF以外的所有其他瀏覽器正常工作。一個選擇一個項目來加載左下角的狀態說'已停止'。我啓動了Firebug,並沒有HTTP操作。這就像一切都停止了。

這裏是捕捉。當我彈出DIV框時,我可以通過在下拉列表中進行選擇來加載FF中的PDF。一旦我關閉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> 

任何想法?

+0

你在說什麼DIV?我在代碼中看不到DIV? – 2010-01-25 19:16:28

+0

whopps..added div code – Todd 2010-01-25 19:38:42

+0

這道菜好運嗎? – 2010-02-09 01:03:11

回答

1

有趣的做法。你爲什麼不試試像這樣操縱你的iframe的src屬性?

<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> 

很難知道這是否可以正常工作,而不會將您的非工作代碼作爲「工作」示例發佈到某處;但試試看吧。也許你可以在某個地方發表一個例子,以便我們看看它?

+0

同樣的問題。除了FireFox之外,所有瀏覽器都可以正常工作。它不會工作,直到窗口打開,然後FireFox正確加載src。否則它說停止。 – Todd 2010-02-03 16:44:25

+0

嗯,這很有趣。你能否在某個地方張貼原型來表明什麼不起作用。我真的很想看看這是怎麼回事。 – 2010-02-04 02:33:48

0

我認爲你的問題是在你的iframe的寬度和高度屬性。在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"> 

試試看,可能會解決你的問題。

+0

另一方面,我沒有看到您在「Clean_ContentPlaceHolder1_c2_flyout_content」div上切換「display:none」的位置。 – Pepper 2010-01-31 15:25:11

+0

從高度和寬度中移除px以解決停止問題並不成功。 – Todd 2010-02-02 06:49:32

1

好的,我已經將你的代碼移植到我的機器上並試用了它,並且在FF 3.5.7中對我來說工作正常。我認爲正在發生的事情是,您安裝了某種插件,這會干擾您正在嘗試做的事情。

如果我是你,我會開始禁用所有插件,重新啓動firefox,看看是否有效。如果有,請開始重新啓用插件,直到應用程序失敗,然後至少知道哪個插件導致了問題。

還檢查Tools > Options > Applications並檢查打開哪些PDF文件。Mine設置爲在Acrobat中在瀏覽器外部打開,這意味着您的腳本不能立即爲我工作;我必須設置FF才能在瀏覽器中打開它以使其工作。

+0

太棒了......我會盡快查看。感謝你在這方面堅持我。 – Todd 2010-02-04 04:23:34

+0

Firefox中的設置會在瀏覽器中打開PDF,因此我不需要更改任何內容。我將運行一些更多的測試,看看我做的一些更改是否工作,以及他們是否發佈了代碼/解決方案。 – Todd 2010-02-04 20:55:16

+0

甜。你嘗試禁用所有的插件嗎?如果你不想這樣做,我建議獲得獨立版本的FF,並使用所有默認設置進行測試:http://portableapps.com/apps/internet/firefox_portable – 2010-02-05 00:45:06

0

一個PDF在瀏覽器中(IFRAME與否)裝載的方式將取決於:

  • 的PDF客戶端安裝(ADOBE PDF閱讀器,SumatraPDF等)
  • 它的版本,
  • 瀏覽器,
  • 用戶選擇的配置(部分選擇在瀏覽器中打開,其他提供下載)。

我建議你來處理從其他角度的問題:

1.使用谷歌文檔的PDF閱讀器的IFRAME

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

內還檢查this SO question

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的選項。