Force inline block display style for <object>.
Test: 1. Build the Chrome extension and load it. 2. Visit https://robwu.nl/pdfjs/object-embed.html 3. Verify that all displayed blocks have the same width and height as the reference ("Expected dimension").
This commit is contained in:
		
							parent
							
								
									f97d52182a
								
							
						
					
					
						commit
						08ad551a01
					
				@ -160,6 +160,22 @@ function updateObjectElement(elem) {
 | 
				
			|||||||
  elem.type = 'application/not-a-pee-dee-eff-type';
 | 
					  elem.type = 'application/not-a-pee-dee-eff-type';
 | 
				
			||||||
  // Force the <object> to reload and render its fallback content.
 | 
					  // Force the <object> to reload and render its fallback content.
 | 
				
			||||||
  elem.data += '';
 | 
					  elem.data += '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Usually the browser renders plugin content in this tag, which is completely
 | 
				
			||||||
 | 
					  // oblivious of styles such as padding, but we insert and render child nodes,
 | 
				
			||||||
 | 
					  // so force padding to be zero to avoid undesired dimension changes.
 | 
				
			||||||
 | 
					  elem.style.padding = '0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // <object> and <embed> elements have a "display:inline" style by default.
 | 
				
			||||||
 | 
					  // Despite this property, when a plugin is loaded in the tag, the tag is
 | 
				
			||||||
 | 
					  // treated like "display:inline-block". However, when the browser does not
 | 
				
			||||||
 | 
					  // render plugin content, the <object> tag does not behave like that, and as
 | 
				
			||||||
 | 
					  // a result the width and height is ignored.
 | 
				
			||||||
 | 
					  // Force "display:inline-block" to make sure that the width/height as set by
 | 
				
			||||||
 | 
					  // web pages is respected.
 | 
				
			||||||
 | 
					  // (<embed> behaves as expected with the default display value, but setting it
 | 
				
			||||||
 | 
					  // to display:inline-block doesn't hurt).
 | 
				
			||||||
 | 
					  elem.style.display = 'inline-block';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Create an <iframe> element without borders that takes the full width and
 | 
					// Create an <iframe> element without borders that takes the full width and
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user