我在Chrome PDF查看器中使用嵌入式PDF进行扩展开发,最近看了一下通过更改<embed>
DOM元素可能实现的内容:可以更改正在查看的页面通过附加#page=2
等
例如
embed_el = document.createElement('embed')
pdf_url = 'https://www.tjvantoll.com/speaking/slides/Web-Components-Catch/San-Francisco/web-components-catch.pdf'
embed_el.src = pdf_url
document.body.innerHTML = '' // discard whatever page you're viewing
document.body.appendChild(embed_el)
在旧版(早期版本... 47?)Chrome版本或当前版本的Firefox(等等)中添加嵌入式查看器,然后可以使用
进行更新page_number = '3'
document.querySelector('body embed')
.setAttribute('src', pdf_url+'#page='+page_number)
尝试使用新的(基于v.47)基于聚合物/网络组件的Chrome PDF查看器,我得到了奇怪的回答,即没有这样的可访问DOM元素<embed>
,它&#39 ; s ...一个功能!
上面的代码使用TypeError
创建并嵌入元素ⓧ Uncaught TypeError: Cannot use 'in' operator to search for 'rawScopes' in undefined
...但之后没有与DOM明显的可访问连接,也没有对embed_el
变量的更改。
尝试访问PDF <embed>
元素的示例:
myfuncel = document.querySelector('embed')
▶ function embed
ⓧ Uncaught TypeError: Cannot use 'in' operator to search for 'rawScopes' in undefined
虽然没有明确的方法将其用作功能......
myfuncel()
ⓧ Uncaught TypeError: myfuncel is not a function(…)
开发人员现在应该做些什么来访问嵌入式PDF的src
属性?
......如果不是超出范围,我有兴趣了解为什么要进行此更改,将嵌入的PDF元素显示为函数所取得的成就。
答案 0 :(得分:2)
我认为这应该是一个评论,但我没有足够的声誉。在当前版本的Chrome中,选择任何&#39;嵌入&#39;时会发生此错误。或者&#39;对象&#39;标记(issue 543932)。如果您更新到Beta版本(48.0.2564.41),则不会再发生这种情况:
document.querySelector('embed');
function anonymous()
__proto__: Object
<function scope>
但即便如此,更新src url也不会更新正在查看的页面。如果有人发现更多信息,我会非常感谢他们在这里分享。