我在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>
有什么想法吗?
答案 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与否)取决于:
我建议你从其他角度处理这个问题:
<强> 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的选项。