[api-minor] Add an option to PDFJS for specifying the |target| attribute of external links
Replaces `PDFJS.openExternalLinksInNewWindow` with a more generic configuration option. *Note:* `PDFJS.openExternalLinksInNewWindow = true;` is equal to `PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK;`.
This commit is contained in:
parent
d89fde05b0
commit
9ab896e307
@ -15,7 +15,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
/* globals PDFJS, Util, AnnotationType, AnnotationBorderStyleType, warn,
|
/* globals PDFJS, Util, AnnotationType, AnnotationBorderStyleType, warn,
|
||||||
CustomStyle */
|
CustomStyle, isExternalLinkTargetSet, LinkTargetStringMap */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -261,8 +261,9 @@ var AnnotationUtils = (function AnnotationUtilsClosure() {
|
|||||||
|
|
||||||
var link = document.createElement('a');
|
var link = document.createElement('a');
|
||||||
link.href = link.title = item.url || '';
|
link.href = link.title = item.url || '';
|
||||||
if (item.url && PDFJS.openExternalLinksInNewWindow) {
|
|
||||||
link.target = '_blank';
|
if (item.url && isExternalLinkTargetSet()) {
|
||||||
|
link.target = LinkTargetStringMap[PDFJS.externalLinkTarget];
|
||||||
}
|
}
|
||||||
|
|
||||||
container.appendChild(link);
|
container.appendChild(link);
|
||||||
|
@ -169,14 +169,27 @@ PDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ?
|
|||||||
16777216 : PDFJS.maxCanvasPixels);
|
16777216 : PDFJS.maxCanvasPixels);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens external links in a new window if enabled. The default behavior opens
|
* (Deprecated) Opens external links in a new window if enabled.
|
||||||
* external links in the PDF.js window.
|
* The default behavior opens external links in the PDF.js window.
|
||||||
* @var {boolean}
|
* @var {boolean}
|
||||||
*/
|
*/
|
||||||
PDFJS.openExternalLinksInNewWindow = (
|
PDFJS.openExternalLinksInNewWindow = (
|
||||||
PDFJS.openExternalLinksInNewWindow === undefined ?
|
PDFJS.openExternalLinksInNewWindow === undefined ?
|
||||||
false : PDFJS.openExternalLinksInNewWindow);
|
false : PDFJS.openExternalLinksInNewWindow);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies the |target| attribute for external links.
|
||||||
|
* The constants from PDFJS.LinkTarget should be used:
|
||||||
|
* - NONE [default]
|
||||||
|
* - SELF
|
||||||
|
* - BLANK
|
||||||
|
* - PARENT
|
||||||
|
* - TOP
|
||||||
|
* @var {number}
|
||||||
|
*/
|
||||||
|
PDFJS.externalLinkTarget = (PDFJS.externalLinkTarget === undefined ?
|
||||||
|
PDFJS.LinkTarget.NONE : PDFJS.externalLinkTarget);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if we can eval strings as JS. Primarily used to improve
|
* Determines if we can eval strings as JS. Primarily used to improve
|
||||||
* performance for font rendering.
|
* performance for font rendering.
|
||||||
|
@ -328,6 +328,49 @@ function shadow(obj, prop, value) {
|
|||||||
}
|
}
|
||||||
PDFJS.shadow = shadow;
|
PDFJS.shadow = shadow;
|
||||||
|
|
||||||
|
var LinkTarget = PDFJS.LinkTarget = {
|
||||||
|
NONE: 0, // Default value.
|
||||||
|
SELF: 1,
|
||||||
|
BLANK: 2,
|
||||||
|
PARENT: 3,
|
||||||
|
TOP: 4,
|
||||||
|
};
|
||||||
|
var LinkTargetStringMap = [
|
||||||
|
'',
|
||||||
|
'_self',
|
||||||
|
'_blank',
|
||||||
|
'_parent',
|
||||||
|
'_top'
|
||||||
|
];
|
||||||
|
|
||||||
|
function isExternalLinkTargetSet() {
|
||||||
|
//#if GENERIC
|
||||||
|
if (PDFJS.openExternalLinksInNewWindow) {
|
||||||
|
warn('PDFJS.openExternalLinksInNewWindow is deprecated, ' +
|
||||||
|
'use PDFJS.externalLinkTarget instead.');
|
||||||
|
if (PDFJS.externalLinkTarget === LinkTarget.NONE) {
|
||||||
|
PDFJS.externalLinkTarget = LinkTarget.BLANK;
|
||||||
|
}
|
||||||
|
// Reset the deprecated parameter, to suppress further warnings.
|
||||||
|
PDFJS.openExternalLinksInNewWindow = false;
|
||||||
|
}
|
||||||
|
//#endif
|
||||||
|
switch (PDFJS.externalLinkTarget) {
|
||||||
|
case LinkTarget.NONE:
|
||||||
|
return false;
|
||||||
|
case LinkTarget.SELF:
|
||||||
|
case LinkTarget.BLANK:
|
||||||
|
case LinkTarget.PARENT:
|
||||||
|
case LinkTarget.TOP:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
warn('PDFJS.externalLinkTarget is invalid: ' + PDFJS.externalLinkTarget);
|
||||||
|
// Reset the external link target, to suppress further warnings.
|
||||||
|
PDFJS.externalLinkTarget = LinkTarget.NONE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
PDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet;
|
||||||
|
|
||||||
var PasswordResponses = PDFJS.PasswordResponses = {
|
var PasswordResponses = PDFJS.PasswordResponses = {
|
||||||
NEED_PASSWORD: 1,
|
NEED_PASSWORD: 1,
|
||||||
INCORRECT_PASSWORD: 2
|
INCORRECT_PASSWORD: 2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user