Skip to content

Commit 321e200

Browse files
committed
Switch to pure iframe solution
Removed embed element in favor of more widely supported iframe. This also enables removal of special handling for Safari (macOS desktop edition). As a result, the forceIframe option will no longer be utilized. The change is backwards-compatible, specifying forceIframe: true will not generate errors.
1 parent ea71f1e commit 321e200

File tree

1 file changed

+9
-25
lines changed

1 file changed

+9
-25
lines changed

pdfobject.js

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -189,26 +189,18 @@
189189
source += pdfOpenFragment;
190190
}
191191

192-
let el_type = (embedType === "pdfjs" || embedType === "iframe") ? "iframe" : "embed";
193-
let el = document.createElement(el_type);
194-
192+
let el = document.createElement("iframe");
195193
el.className = "pdfobject";
196194
el.type = "application/pdf";
197195
el.title = title;
198196
el.src = source;
199-
200-
if(id){
201-
el.id = id;
202-
}
203-
204-
if(el_type === "iframe"){
205-
el.allow = "fullscreen";
206-
el.frameborder = "0";
207-
}
197+
el.allow = "fullscreen";
198+
el.frameborder = "0";
199+
if(id){ el.id = id; }
208200

209201
if(!omitInlineStyles){
210202

211-
let style = (el_type === "embed") ? "overflow: auto;" : "border: none;";
203+
let style = "border: none;";
212204

213205
if(targetNode !== document.body){
214206
//assign width and height to target node
@@ -222,7 +214,7 @@
222214

223215
}
224216

225-
//Allow developer to insert custom attribute on embed/iframe element, but ensure it does not conflict with attributes used by PDFObject
217+
//Allow developer to insert custom attribute on iframe element, but ensure it does not conflict with attributes used by PDFObject
226218
let reservedTokens = ["className", "type", "title", "src", "style", "id", "allow", "frameborder"];
227219
if(customAttribute && customAttribute.key && reservedTokens.indexOf(customAttribute.key) === -1){
228220
el.setAttribute(customAttribute.key, (typeof customAttribute.value !== "undefined") ? customAttribute.value : "");
@@ -231,7 +223,7 @@
231223
targetNode.classList.add("pdfobject-container");
232224
targetNode.appendChild(el);
233225

234-
return targetNode.getElementsByTagName(el_type)[0];
226+
return targetNode.getElementsByTagName("iframe")[0];
235227

236228
};
237229

@@ -256,7 +248,6 @@
256248
let supportRedirect = (typeof opt.supportRedirect === "boolean") ? opt.supportRedirect : false;
257249
let omitInlineStyles = (typeof opt.omitInlineStyles === "boolean") ? opt.omitInlineStyles : false;
258250
let suppressConsole = (typeof opt.suppressConsole === "boolean") ? opt.suppressConsole : false;
259-
let forceIframe = (typeof opt.forceIframe === "boolean") ? opt.forceIframe : false;
260251
let PDFJS_URL = opt.PDFJS_URL || false;
261252
let targetNode = getTargetElement(selector);
262253
let fallbackHTML = "";
@@ -289,15 +280,8 @@
289280
//Embed PDF if traditional support is provided, or if this developer is willing to roll with assumption
290281
//that modern desktop (not mobile) browsers natively support PDFs
291282
if(supportsPDFs || (assumptionMode && !isMobileDevice)){
292-
293-
//Should we use <embed> or <iframe>? In most cases <embed>.
294-
//Allow developer to force <iframe>, if desired
295-
//There is an edge case where Safari does not respect 302 redirect requests for PDF files when using <embed> element.
296-
//Redirect appears to work fine when using <iframe> instead of <embed> (Addresses issue #210)
297-
//Forcing Safari desktop to use iframe due to freezing bug in macOS 11 (Big Sur)
298-
let embedtype = (forceIframe || supportRedirect || isSafariDesktop) ? "iframe" : "embed";
299-
300-
return generatePDFObjectMarkup(embedtype, targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute);
283+
284+
return generatePDFObjectMarkup("iframe", targetNode, url, pdfOpenFragment, width, height, id, title, omitInlineStyles, customAttribute);
301285

302286
}
303287

0 commit comments

Comments
 (0)