mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
fix: shifted dompurify.addhook functions inside removescript
This commit is contained in:
parent
3f486ac0e1
commit
7960f94eba
@ -25,26 +25,28 @@ export const getRows = (s?: string): string[] => {
|
|||||||
* @returns The safer text
|
* @returns The safer text
|
||||||
*/
|
*/
|
||||||
export const removeScript = (txt: string): string => {
|
export const removeScript = (txt: string): string => {
|
||||||
return DOMPurify.sanitize(txt);
|
const TEMPORARY_ATTRIBUTE = 'data-temp-href-target';
|
||||||
};
|
|
||||||
|
|
||||||
const TEMPORARY_ATTRIBUTE = 'data-temp-href-target';
|
DOMPurify.addHook('beforeSanitizeAttributes', (node: Element) => {
|
||||||
|
if (node.tagName === 'A' && node.hasAttribute('target')) {
|
||||||
DOMPurify.addHook('beforeSanitizeAttributes', (node: Element) => {
|
node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute('target') || '');
|
||||||
if (node.tagName === 'A' && node.hasAttribute('target')) {
|
|
||||||
node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute('target') || '');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
DOMPurify.addHook('afterSanitizeAttributes', (node: Element) => {
|
|
||||||
if (node.tagName === 'A' && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {
|
|
||||||
node.setAttribute('target', node.getAttribute(TEMPORARY_ATTRIBUTE) || '');
|
|
||||||
node.removeAttribute(TEMPORARY_ATTRIBUTE);
|
|
||||||
if (node.getAttribute('target') === '_blank') {
|
|
||||||
node.setAttribute('rel', 'noopener');
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
const sanitizedText = DOMPurify.sanitize(txt);
|
||||||
|
|
||||||
|
DOMPurify.addHook('afterSanitizeAttributes', (node: Element) => {
|
||||||
|
if (node.tagName === 'A' && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {
|
||||||
|
node.setAttribute('target', node.getAttribute(TEMPORARY_ATTRIBUTE) || '');
|
||||||
|
node.removeAttribute(TEMPORARY_ATTRIBUTE);
|
||||||
|
if (node.getAttribute('target') === '_blank') {
|
||||||
|
node.setAttribute('rel', 'noopener');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return sanitizedText;
|
||||||
|
};
|
||||||
|
|
||||||
const sanitizeMore = (text: string, config: MermaidConfig) => {
|
const sanitizeMore = (text: string, config: MermaidConfig) => {
|
||||||
if (config.flowchart?.htmlLabels !== false) {
|
if (config.flowchart?.htmlLabels !== false) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user