javascript - 显示 base64 编码 pdf 的 iframe 上的 JQuery .contents()
问题描述
我有一个显示 base64 编码 PDF 的 iframe。加载后,我尝试执行.contents().find(..)
,但是找不到内容。iframe 中包含正确加载的 HTML 文档,其中包含 PDF 和一个文本元素" "
。Doing.contents()
将返回一项,即 text " "
。
如果我不包含 base64 字符串作为 iframe ( data:application/pdf;base64,..
) 的源,所有这些代码都可以正常工作。PDF 本身显示正常并且加载正确,但我找不到通过 JS/JQuery 访问文档的方法。我不认为这是一个时间问题,因为在调试器模式下,当它失败之前在该行暂停时,我可以看到内容已完全加载(此外,.on('load', ..)
正在使用该方法)。
相关代码(ASP .NET MVC):
HTML:
<iframe class="converted-display" id="doc-iframe" src="@ViewBag.RAWData">
</iframe>
JS:
$(document).ready(function () {
var url = window.location.href
if (url.toLowerCase().includes("convert")) {
$('#doc-iframe').on('load', function () {
debugger
$('#doc-iframe').contents().find('body').addClass('..')
var element = $('#doc-iframe').contents().find('head').first()[0];
var style = document.createElement('style');
style.innerHTML = ..
window.styleNode = style;
element.parentNode.insertBefore(style, element);
})
}
})
ViewBag.RAWData
将包含一个 ( data:application/pdf;base64,..
) 字符串。
$('#doc-iframe') 在调试器处暂停时的结果,清楚地表明文档已加载
为了排除异步问题,我还在页面完全加载后尝试了控制台中的命令,并遇到了同样的问题。
有没有人有任何建议或资源?我已经阅读了 .contents() 和其他各种文档的文档,还尝试了 JS 的多种变体,以及显示 PDF 的不同方法,例如对象、嵌入,这让我想知道根本问题是否是正在提供的 src。
非常感谢您的帮助。
更新:
跨域问题,这是我没想到的,因为数据在加载时本质上是硬编码的 - 关于如何解决这个问题的任何建议?
解决方案
推荐阅读
- java - 如何创建动态变量名?Android Studio id 名称问题
- emacs - emacs text-scale-decrease 和 text-scale-increase 仅显示数字模式增量
- android - com.google.android.material.appbar.AppBarLayout$LayoutParams 无法转换为 androidx.coordinatorlayout.widget.CoordinatorLayout$LayoutParams
- oracle - 如何在 Oracle Database 21c XE 上安装演示模式,例如 SCOTT / TIGER?
- python - 为什么 Python 在计算中将精确的小数转换为近似值?
- haskell - 对网格的每个元素应用一些操作 F?- 哈斯克尔
- sql - 对于这种情况,正确的 SQL Server 语句是什么?
- cuda - numba gpu:如何计算两个数组的最大相对误差?
- html - 删除 Chrome 上嵌套 div 之间的奇怪空白
- yaml - 如何将注释掉的密钥保存到 yaml