Firefox无法加载iFrame

时间:2010-01-25 19:11:32

标签: jquery firefox iframe

我在Firefox中遇到了一个奇怪的问题,并在iframe中加载了PDF。这是页面的作用。   - 从下拉列表中选择一个项目   - 根据选择在iframe中加载PDF。

所有其他浏览器除FF外都能正常工作。一个选择要加载左下角状态的项目说“停止”。我解雇了Firebug并且没有HTTP动作。这就像一切都停止了。

这是捕获。当我弹出DIV框时,我可以通过在下拉列表中进行选择来加载FF中的PDF。一旦我关闭div,它就不会加载。

以下是加载PDF的jQuery

<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 个答案:

答案 0 :(得分: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>

如果没有将非工作代码作为“工作”示例发布,很难知道这是否有效;但试一试。也许你可以在某处发布一个例子,以便我们可以看看它?

答案 1 :(得分:1)

好的,我已经将你的代码移植到我的机器上并尝试了它,它在FF 3.5.7中对我来说很好。我认为发生的事情是你安装了某种插件,干扰了你正在尝试做的事情。

如果我是你,我会开始禁用我的所有插件,重启firefox并查看是否有效。如果是这样,请开始重新启用您的插件,直到您的应用失败,然后您至少知道哪个插件导致了问题。

同时检查Tools > Options > Applications并检查设置为打开的PDF文件。我的设置在浏览器外部的Acrobat中打开,这意味着您的脚本不能立即为我工作;我必须设置FF才能在浏览器中打开它以使其正常工作。

答案 2 :(得分:0)

我认为您的问题在于iframe中的width和height属性。在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">

试一试,可能会解决您的问题。

答案 3 :(得分:0)

PDF在浏览器中的加载方式(IFRAME与否)取决于:

  • 安装了PDF客户端(ADOBE PDF阅读器,SumatraPDF等)
  • 它的版本,
  • 浏览器,
  • 用户选择的配置(有些选择在浏览器中打开,其他用于提供下载)。

我建议你从其他角度处理这个问题:

<强> 1。在IFRAME中使用Google Docs PDF阅读器

// 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的选项。