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

Accessing PDF embed element in new Chrome PDF viewer

我曾在 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 开始)Polymer/web 基于组件的 Chrome PDF 查看器,我得到一个奇怪的响应,即没有这样的可访问 DOM 元素 <embed>, 这是...一个函数!

以上代码创建并嵌入了元素,无论如何,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 元素显示为函数实现了什么。

我认为这应该是一个评论,但我没有足够的声誉。在 Chrome 的当前版本中,选择任何 'embed' 或 'object' 标签 (issue 543932) 时都会发生此错误。如果您更新到测试版 (48.0.2564.41),则不会再发生这种情况:

 document.querySelector('embed');
  function anonymous()
    __proto__: Object
    <function scope>

但即便如此,更新 src url 并不会更新正在查看的页面。如果有人找到更多信息,如果他们在这里分享,我将不胜感激。