在新的Chrome PDF查看器中访问PDF嵌入元素

时间:2015-12-13 02:14:53

标签: javascript google-chrome pdf web-component

我在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元素显示为函数所取得的成就。

1 个答案:

答案 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也不会更新正在查看的页面。如果有人发现更多信息,我会非常感谢他们在这里分享。