malat
malat

Reputation: 12510

Cannot refresh <object/> when changing from application/pdf to text/html

I am trying to refresh an element in the DOM tree. Basically the typescript code simply update the data & type of an existing HTMLObjectElement. Here is the pseudocode:

const textCanvas: HTMLObjectElement = <HTMLObjectElement>(curElement.children.namedItem('text-canvas'));
// Populate both the actual data as well as the associated mime/type:
textCanvas.data = enabledTextElement.textData; // 'blob:http://localhost:8081/d3c9a0ac-8e40-4e0e-aeb8-91656273837c'
textCanvas.type = enabledTextElement.mimeType; // 'application/pdf'

Which then gets updated with:

textCanvas.data = enabledTextElement.textData; // 'blob:http://localhost:8081/3c5ad888-0a7f-41d0-8ec9-35c334ef3f20'
textCanvas.type = enabledTextElement.mimeType; // 'text/html'

My chrome simply display the PDF version:

enter image description here

The funny part is if I do the opposite (html first), then the element gets properly updated (html text is displayed, then the PDF box is displayed). I tried to verify if this is supposed to work at:

And it seems it should. I also found an old bug report:

Using:

Google Chrome   80.0.3987.163 (Official Build) (64-bit) (cohort: 81_Win_122)
Revision    e7fbe071abe9328cdce4ffedac9822435fbd3656-refs/branch-heads/3987@{#1037}
OS  Windows 8.1 (Build 9600.19676)
JavaScript  V8 8.0.426.30

If that help the URL are created from a Blob which is then passed to URL.createObjectURL.

Upvotes: 0

Views: 107

Answers (1)

malat
malat

Reputation: 12510

I am currently using the following work-around:

textCanvas.data = '';
textCanvas.type = enabledTextElement.mimeType;
textCanvas.data = enabledTextElement.textData;

Seems to make the symptoms go away. I've filled a bug report just in case:

Upvotes: 0

Related Questions