【问题标题】:Firefox having trouble with iFrame loadingFirefox 在加载 iFrame 时遇到问题
【发布时间】:2010-01-25 19:11:31
【问题描述】:

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

除 FF 外,所有其他浏览器都可以正常工作。选择一个项目以加载左下角的状态为“已停止”。我启动了 Firebug,但没有 HTTP 操作。好像一切都停止了。

这就是问题所在。当我弹出 DIV 框时,我可以通过在下拉列表中进行选择来将 PDF 加载到 FF 中。一旦我关闭 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> 

有什么想法吗?

【问题讨论】:

  • 你在说什么DIV?我在您的代码中没有看到 DIV?
  • 由于其他一些任务,我没有机会查看此内容。我会及时通知你发生的事情。

标签: jquery firefox iframe


【解决方案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>

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

【讨论】:

  • 同样的问题..在除 FireFox 之外的所有浏览器上都可以正常工作。在打开窗口然后 FireFox 正确加载 src 之前它不起作用。否则它会显示已停止。
  • 嗯,这很有趣。您能否在某个地方发布一个原型,以显示什么不起作用。我真的很想看看结果如何。
【解决方案2】:

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

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

同时签入Tools &gt; Options &gt; Applications 并检查哪些 PDF 文件设置为打开。我的设置为在浏览器外部的 Acrobat 中打开,这意味着您的脚本无法立即为我工作;我必须设置 FF 才能在浏览器中打开它才能正常工作。

【讨论】:

  • 太棒了...我会尽快研究一下。感谢您在这方面的坚持。
  • Firefox 中的设置让它在浏览器中打开 PDF,所以我不需要更改任何内容。我将再进行一些测试,以查看我所做的某些更改是否有效,以及它们是否确实无法发布代码/解决方案。
  • 甜蜜。您是否尝试禁用所有插件?如果您不想这样做,我建议您获取 FF 的独立版本并使用所有默认设置进行测试:portableapps.com/apps/internet/firefox_portable
  • NoScript 或 AdBlock Plus 都可能导致这些结果。我敢肯定还有其他人。
【解决方案3】:

我认为您的问题在于 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">

试一试,或许能解决你的问题。

【讨论】:

  • 另一方面,我看不到您在“Clean_ContentPlaceHolder1_c2_flyout_content”div 上的“display:none”切换位置。
  • 从高度和宽度中删除 px 来解决 Stopped 问题时运气不佳。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2018-04-09
    相关资源
    最近更新 更多