HTML Sanitizer API

Draft Community Group Report ,

This version:
https://wicg.github.io/sanitizer-api/
Issue Tracking:
GitHub
Editors:
Frederik Braun ( Mozilla )
Mario Heiderich ( Cure53 )
Daniel Vogelheim ( Google LLC )
Tom Schuster ( Mozilla )
Not Ready For Implementation

This spec is not yet ready for implementation. It exists in this repository to record the ideas and promote discussion.

Before attempting to implement this spec, please contact the editors.


Abstract

This document specifies a set of APIs which allow developers to take untrusted HTML input and sanitize it The draft should be no longer consulted for safe insertion implementations. All content has been merged into a document’s DOM. the HTML WHATWG repository.

Status of this document

This specification was published by the Web Platform Incubator Community Group . It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Contributor License Agreement (CLA) there is a limited opt-out and other conditions apply. Learn more about W3C Community and Business Groups .

1. Introduction Note

This section is not normative. Web applications often need to work with strings of HTML on the client side, perhaps as part of a client-side templating solution, perhaps as part of rendering user generated content, etc. It is difficult to do so in a safe way. The naive approach of joining strings together and stuffing them into an Element ’s innerHTML is fraught with risk, as it can cause JavaScript execution in a number of unexpected ways. Libraries like [DOMPURIFY] attempt to manage this problem by carefully parsing and sanitizing strings before insertion, by constructing a DOM and filtering its members through an allow-list. This has proven to be a fragile approach, as the parsing APIs exposed to the web don’t always map in reasonable ways to the browser’s behavior when actually rendering a string as HTML in the "real" DOM. Moreover, the libraries need to keep on top of browsers' changing behavior over time; things that once were safe may turn into time-bombs based on new platform-level features. The browser has a fairly good idea of when it is going to execute code. We can improve upon the user-space libraries by teaching the browser how to render HTML from an arbitrary string in a safe manner, and do so in a way that is much more likely to be maintained and updated along with the browser’s own changing parser implementation. This document outlines an API which aims to do just that. 1.1. Goals Mitigate the risk of DOM-based cross-site scripting attacks by providing developers with mechanisms for handling user-controlled HTML which prevent direct script execution upon injection. Make HTML output safe for use within the current user agent, taking into account its current understanding of HTML. Allow developers to override the default set of elements and attributes. Adding certain elements and attributes can prevent script gadget attacks. 1.2. API Summary The Sanitizer API offers functionality to parse a string containing HTML into a DOM tree, and to filter the resulting tree according to a user-supplied configuration. The methods come in two by two flavours: Safe and unsafe : The "safe" methods will not generate any markup that executes script. That is, they should be safe from XSS. The "unsafe" methods will parse and filter whatever they’re supposed to. See also: § 4 Security Considerations . Context: Methods are defined on Element and ShadowRoot and will replace these Node ’s children, and are largely analogous to innerHTML . There are also static methods on the Document , which parse an entire document are largely analogous to DOMParser . parseFromString() . 2. Framework 2.1. Sanitizer API The Element interface defines two methods, setHTML() and setHTMLUnsafe() . Both of these take a DOMString with HTML markup, and an optional configuration. { [ = {}); }; { [ = {}); }; Element ’s setHTMLUnsafe( html , options ) method steps are: Let compliantHTML be the result of invoking the get trusted type compliant string algorithm with TrustedHTML , this ’s relevant global object , html , "Element setHTMLUnsafe", and "script". Let target be this ’s template contents if this is a template element; otherwise this . Set and filter HTML given target , this , compliantHTML , options , and false. Element ’s setHTML( html , options ) method steps are: Let target be this ’s template contents if this is a template ; otherwise this . Set and filter HTML given target , this , html , options , and true. { [ = {}); }; { [ = {}); }; These methods are mirrored on the ShadowRoot : ShadowRoot ’s setHTMLUnsafe( html , options ) method steps are: Let compliantHTML be the result of invoking the get trusted type compliant string algorithm with TrustedHTML , this ’s relevant global object , html , "ShadowRoot setHTMLUnsafe", and "script". Set and filter HTML using this , this ’s shadow host (as context element), compliantHTML , options , and false. ShadowRoot ’s setHTML( html , options ) method steps are: Set and filter HTML using this (as target), this (as context element), html , options , and true. The Document interface gains two new methods which parse an entire Document : { = {}); }; { = {}); }; The parseHTMLUnsafe( html , options ) method steps are: Let compliantHTML be the result of invoking the get trusted type compliant string algorithm with TrustedHTML , the current global object , html , "Document parseHTMLUnsafe", and "script". Let document be a new Document , whose content type is "text/html". Note: Since document does not have a browsing context, scripting is disabled. Set document ’s allow declarative shadow roots to true. Parse HTML from a string given document and compliantHTML . Let sanitizer be the result of calling get a sanitizer instance from options with options and false. Call sanitize on document with sanitizer and false. Return document . The parseHTML( html , options ) method steps are: Let document be a new Document , whose content type is "text/html". Note: Since document does not have a browsing context, scripting is disabled. Set document ’s allow declarative shadow roots to true. Parse HTML from a string given document and html . Let sanitizer be the result of calling get a sanitizer instance from options with options and true. Call sanitize on document with sanitizer and true. Return document . 2.2. SetHTML options and the configuration object. The family of setHTML() -like methods all accept an options dictionary. Right now, only one member of this dictionary is defined: }; { ( = "default"; }; { ( = {}; }; The Sanitizer configuration object encapsulates a filter configuration. The same configuration can be used with both "safe" or "unsafe" methods, where the "safe" methods perform an implicit removeUnsafe operation on the passed in configuration and have a default configuration when none is passed. The default differs between "safe" and "unsafe" methods: The "safe" methods are aiming to be safe by default and have a restrictive default, while the "unsafe" methods are unrestricted by default. The intent for configuration use is that one (or a few) configurations will be built-up early on in a page’s lifetime, and can then be used whenever needed. This allows implementations to pre-process configurations. The configuration object can be queried to return a configuration dictionary. It can also be modified directly. ] { = "default"); // Query configuration: (); // Modify a Sanitizer's lists and fields: ); ); ); ); ); ); ); ); ); // Remove markup that executes script. (); }; A Sanitizer has an associated SanitizerConfig configuration . The constructor( configuration ) method steps are: If configuration is a SanitizerPresets string , then: Assert : configuration is default . Set configuration to the built-in safe default configuration . Let valid be the return value of set a configuration with configuration and true on this . If valid is false, then throw a TypeError . The get() method steps are: Note: Outside of the get() method, the order of the Sanitizer’s elements and attributes is unobservable. By explicitly sorting the result of this method, we give implementations the opportunity to optimize by, for example, using unordered sets internally. Let config be this ’s configuration . Assert : config is valid . If config [" elements "] exists : For any element of config [" elements "]: If element [" attributes "] exists : Set element [" attributes "] to the result of sort in ascending order element [" attributes "], with attrA being less than item attrB . If element [" removeAttributes "] exists : Set element [" removeAttributes "] to the result of sort in ascending order element [" removeAttributes "], with attrA being less than item attrB . Set config [" elements "] to the result of sort in ascending order config [" elements "], with elementA being less than item elementB . Otherwise: Set config [" removeElements "] to the result of sort in ascending order config [" removeElements "], with elementA being less than item elementB . If config [" replaceWithChildrenElements "] exists : Set config [" replaceWithChildrenElements "] to the result of sort in ascending order config [" replaceWithChildrenElements "], with elementA being less than item elementB . If config [" processingInstructions "] exists : Set config [" processingInstructions "] to the result of sort in ascending order config [" processingInstructions "], with piA [" target "] being code unit less than piB [" target "]. Otherwise: Set config [" removeProcessingInstructions "] to the result of sort in ascending order config [" removeProcessingInstructions "], with piA [" target "] being code unit less than piB [" target "]. If config [" attributes "] exists : Set config [" attributes "] to the result of sort in ascending order config [" attributes "], with attrA being less than item attrB . Otherwise: Set config [" removeAttributes "] to the result of sort in ascending order config [" removeAttributes "], with attrA being less than item attrB . Return config . The allowElement( element ) method steps are: Note: This algorithm is relatively involved, because the element allow list may specifiy per-element allow- or remove-lists for attributes. This requires that we distinguish 4 cases: Whether we have a global allow- or remove-list, and whether these lists already contain element or not. Let configuration be this ’s configuration . Assert : configuration is valid . Set element to the result of canonicalize a sanitizer element with attributes with element . If configuration [" elements "] exists : Set modified to the result of remove element from configuration [" replaceWithChildrenElements "]. Comment : We need to make sure the per-element attributes do not overlap with global attributes. If configuration [" attributes "] exists : If element [" attributes "] exists : Set element [" attributes "] to remove duplicates from element [" attributes "]. Set element [" attributes "] to the difference of element [" attributes "] and configuration [" attributes "]. If configuration [" dataAttributes "] is true: Remove all items item from element [" attributes "] where item is a custom data attribute . If element [" removeAttributes "] exists : Set element [" removeAttributes "] to remove duplicates from element [" removeAttributes "]. Set element [" removeAttributes "] to the intersection of element [" removeAttributes "] and configuration [" attributes "]. Otherwise: If element [" attributes "] exists : Set element [" attributes "] to remove duplicates from element [" attributes "]. Set element [" attributes "] to the difference of element [" attributes "] and element [" removeAttributes "] with default « ». Remove element [" removeAttributes "]. Set element [" attributes "] to the difference of element [" attributes "] and configuration [" removeAttributes "]. If element [" removeAttributes "] exists : Set element [" removeAttributes "] to remove duplicates from element [" removeAttributes "]. Set element [" removeAttributes "] to the difference of element [" removeAttributes "] and configuration [" removeAttributes "]. If configuration [" elements "] does not contain element : Comment : This is the case with a global allow-list that does not yet contain element . Append element to configuration [" elements "]. Return true. Comment : This is the case with a global allow-list that already contains element . Let current element be the item in configuration [" elements "] where item [" name "] equals element [" name "] and item [" namespace "] equals element [" namespace "]. If element equals current element then return modified . Remove element from configuration [" elements "]. Append element to configuration [" elements "] Return true. Otherwise: If element [" attributes "] exists or element [" removeAttributes "] with default « » is not empty : The user agent may report a warning to the console that this operation is not supported. Return false. Set modified to the result of remove element from configuration [" replaceWithChildrenElements "]. If configuration [" removeElements "] does not contain element : Comment : This is the case with a global remove-list that does not contain element . Return modified . Comment : This is the case with a global remove-list that contains element . Remove element from configuration [" removeElements "]. Return true. The removeElement( element ) method steps are to remove an element with element and this ’s configuration . The replaceElementWithChildren( element ) method steps are: Let configuration be this ’s configuration . Assert : configuration is valid . Set element to the result of canonicalize a sanitizer element with element . If the built-in non-replaceable elements list contains element : Return false. If configuration [" replaceWithChildrenElements "] contains element : Return false. Remove element from configuration [" removeElements "]. Remove element from configuration [" elements "] list. Add element to configuration [" replaceWithChildrenElements "]. Return true. The allowProcessingInstruction( pi ) method steps are: Let configuration be this ’s configuration . Assert : configuration is valid . Set pi to the result of canonicalize a sanitizer processing instruction with pi . If configuration [" processingInstructions "] exists : If configuration [" processingInstructions "] contains pi : Return false. Append pi to configuration [" processingInstructions "]. Return true. Otherwise: If configuration [" removeProcessingInstructions "] contains pi : Remove the item from configuration [" removeProcessingInstructions "] whose " target " is pi [" target "]. Return true. Return false. The removeProcessingInstruction( pi ) method steps are: Let configuration be this ’s configuration . Assert : configuration is valid . Set pi to the result of canonicalize a sanitizer processing instruction with pi . If configuration [" processingInstructions "] exists : If configuration [" processingInstructions "] contains pi : Remove the item from configuration [" processingInstructions "] whose " target " is pi [" target "]. Return true. Return false. Otherwise: If configuration [" removeProcessingInstructions "] contains pi : Return false. Append pi to configuration [" removeProcessingInstructions "]. Return true. The allowAttribute( attribute ) method steps are: Note: This method distinguishes two cases, namely whether we have a global allow- or a global remove-list. If add attribute to a global allow-list, we may need to do additional work to fix up per-element allow- or remove-lists to maintain our validity criteria. Let configuration be this ’s configuration . Assert : configuration is valid . Set attribute to the result of canonicalize a sanitizer attribute with attribute . If configuration [" attributes "] exists : Comment : If we have a global allow-list, we need to add attribute . If configuration [" dataAttributes "] is true and attribute is a custom data attribute , then return false. If configuration [" attributes "] contains attribute return false. Comment : Fix-up per-element allow and remove lists. If configuration [" elements "] exists : For each element in configuration [" elements "]: If element [" attributes "] with default « » contains attribute : Remove attribute from element [" attributes "]. Assert : element [" removeAttributes "] with default « » does not contain attribute . Append attribute to configuration [" attributes "] Return true. Otherwise: Comment : If we have a global remove-list, we need to remove attribute . If configuration [" removeAttributes "] does not contain attribute : Return false. Remove attribute from configuration [" removeAttributes "]. Return true. The removeAttribute( attribute ) method steps are to remove an attribute with attribute and this ’s configuration . The setComments( allow ) method steps are: Let configuration be this ’s configuration . Assert : configuration is valid . If configuration [" comments "] exists and configuration [" comments "] equals allow , then return false; Set configuration [" comments "] to allow . Return true. The setDataAttributes( allow ) method steps are: Let configuration be this ’s configuration . Assert : configuration is valid . If configuration [" attributes "] does not exist , then return false. If configuration [" dataAttributes "] equals allow , then return false. If allow is true: Remove any items attr from configuration [" attributes "] where attr is a custom data attribute . If configuration [" elements "] exists : For each element in configuration [" elements "]: If element [" attributes "] exists : Remove any items attr from element [" attributes "] where attr is a custom data attribute . Set configuration [" dataAttributes "] to allow . Return true. The removeUnsafe() method steps are to update this ’s configuration with the result of calling remove unsafe on this ’s configuration . 2.3. The Configuration Dictionary { ; = "http://www.w3.org/1999/xhtml"; }; // Used by "elements" { ; ; }; ; ; { ; }; ; { ; ; }; ; { ; ; ; ; ; ; ; ; ; }; 2.4. Configuration Invariants Configurations can and ought to be modified by developers to suit their purposes. Options are to write a new configuration dictionary from scratch, to modify an existing Sanitizer ’s configuration by using the modifier methods, or to get() an existing Sanitizer ’s configuration as a dictionary and modify the dictionary and then create a new Sanitizer with it. An empty configuration allows everything (when called with the "unsafe" methods like setHTMLUnsafe ). A configuration "default" contains a built-in safe default configuration . Note that "safe" and "unsafe" sanitizer methods have different defaults. Not all configuration dictionaries are valid. A valid configuration avoids redundancy (like specifying the same element to be allowed twice) and contradictions (like specifying an element to be both removed and allowed.) Several conditions need to hold for a configuration to be valid: Mixing global allow- and remove-lists: elements or removeElements can exist, but not both. If both are missing, this is equivalent to removeElements set to « ». attributes or removeAttributes can exist, but not both. If both are missing, this is equivalent to removeAttributes set to « ». dataAttributes is conceptually an extension of the attributes allow-list. The dataAttributes attribute is only allowed when a attributes list is used. Duplicate entries between different global lists: There are no duplicate entries (i.e., no same elements) between elements , removeElements , or replaceWithChildrenElements . There are no duplicate entries (i.e., no same attributes) between attributes or removeAttributes . Mixing local allow- and remove-lists on the same element: When a attributes list exists, both, either or none of the attributes and removeAttributes lists are allowed on the same element. When a removeAttributes list exists, either or none of the attributes and removeAttributes lists are allowed on the same element, but not both. Duplicate entries on the same element: There are no duplicate entries between attributes and removeAttributes on the same element. No element from the built-in non-replaceable elements list appears in replaceWithChildrenElements , since replacing these elements with their children could lead to re-parsing issues or invalid node trees. The elements element allow-list can also specify allowing or removing attributes for a given element. This is meant to mirror [HTML] ’s structure, which knows both global attributes as well as local attributes that apply to a specific element. Global and local attributes can be mixed, but note that ambiguous configurations where a particular attribute would be allowed by one list and forbidden by another, are generally invalid. global attributes global removeAttributes local attributes An attribute is allowed if it matches either list. No duplicates are allowed. An attribute is only allowed if it’s in the local allow list. No duplicate entries between global remove and local allow lists are allowed. Note that the global remove list has no function for this particular element, but may well apply to other elements that do not have a local allow list. local removeAttributes An attribute is allowed if it’s in the global allow-list, but not in the local remove-list. Local remove must be a subset of the global allow lists. An attribute is allowed if it is in neither list. No duplicate entries between global remove and local remove lists are allowed. Please note the asymmetry where mostly no duplicates between global and per-element lists are permitted, but in the case of a global allow-list and a per-element remove-list the latter must be a subset of the former. An excerpt of the table above, only focusing on duplicates, is as follows: global attributes global removeAttributes local attributes No duplicates are allowed. No duplicates are allowed. local removeAttributes Local remove must be a subset of the global allow lists. No duplicates are allowed. The dataAttributes setting allows custom data attributes . The rules above easily extends to custom data attributes if one considers dataAttributes to be an allow-list: global attributes and dataAttributes set local attributes All custom data attributes are allowed. No custom data attributes may be listed in any allow-list, as that would mean a duplicate entry. local removeAttributes A custom data attribute is allowed, unless it’s listed in the local remove-list. No custom data attribute may be listed in the global allow-list, as that would mean a duplicate entry. Putting these rules in words: Duplicates and interactions between global and local lists: If a global attributes allow list exists, then all element’s local lists: If a local attributes allow list exists, there may be no duplicate entries between these lists. If a local removeAttributes remove list exists, then all its entries must also be listed in the global attributes allow list. If dataAttributes is true, then no custom data attributes may be listed in any of the allow-lists. If a global removeAttributes remove list exists, then: If a local attributes allow list exists, there may be no duplicate entries between these lists. If a local removeAttributes remove list exists, there may be no duplicate entries between these lists. Not both a local attributes allow list and local removeAttributes remove list exists. dataAttributes must be absent. To determine whether a canonical SanitizerConfig config is valid : NOTE: It’s expected that the configuration being passing in has previously been run through the canonicalize the configuration steps. We will simply assert conditions that that algorithm should have guaranteed to hold. Assert : config [" elements "] exists or config [" removeElements "] exists . If config [" elements "] exists and config [" removeElements "] exists , then return false. Assert : Either config [" processingInstructions "] exists or config [" removeProcessingInstructions "] exists . If config [" processingInstructions "] exists and config [" removeProcessingInstructions "] exists , then return false. Assert : Either config [" attributes "] exists or config [" removeAttributes "] exists . If config [" attributes "] exists and config [" removeAttributes "] exists , then return false. Assert : All SanitizerElementNamespaceWithAttributes , SanitizerElementNamespace , SanitizerProcessingInstruction , and SanitizerAttributeNamespace items in config are canonical, meaning they have been run through canonicalize a sanitizer element , canonicalize a sanitizer processing instruction , or canonicalize a sanitizer attribute , as appropriate. If config [" elements "] exists : If config [" elements "] has duplicates , then return false. Otherwise: If config [" removeElements "] has duplicates , then return false. If config [" replaceWithChildrenElements "] exists and has duplicates , then return false. If config [" processingInstructions "] exists : If config [" processingInstructions "] has duplicate targets , then return false. Otherwise: If config [" removeProcessingInstructions "] has duplicate targets , then return false. If config [" attributes "] exists : If config [" attributes "] has duplicates , then return false. Otherwise: If config [" removeAttributes "] has duplicates , then return false. If config [" replaceWithChildrenElements "] exists : For each element of config [" replaceWithChildrenElements "]: If the built-in non-replaceable elements list contains element , then return false. If config [" elements "] exists : If the intersection of config [" elements "] and config [" replaceWithChildrenElements "] is not empty , then return false. Otherwise: If the intersection of config [" removeElements "] and config [" replaceWithChildrenElements "] is not empty , then return false. If config [" attributes "] exists : Assert : config [" dataAttributes "] exists . If config [" elements "] exists : For each element of config [" elements "]: If element [" attributes "] exists and element [" attributes "] has duplicates , then return false. If element [" removeAttributes "] exists and element [" removeAttributes "] has duplicates , then return false. If the intersection of config [" attributes "] and element [" attributes "] with default « » is not empty , then return false. If element [" removeAttributes "] with default « » is not a subset of config [" attributes "], then return false. If config [" dataAttributes "] is true and element [" attributes "] contains a custom data attribute , then return false. If config [" dataAttributes "] is true and config [" attributes "] contains a custom data attribute , then return false. Otherwise: If config [" elements "] exists : For each element of config [" elements "]: If element [" attributes "] exists and element [" removeAttributes "] exists , then return false. If element [" attributes "] exist and element [" attributes "] has duplicates , then return false. If element [" removeAttributes "] exist and element [" removeAttributes "] has duplicates , then return false. If the intersection of config [" removeAttributes "] and element [" attributes "] with default « » is not empty , then return false. If the intersection of config [" removeAttributes "] and element [" removeAttributes "] with default « » is not empty , then return false. If config [" dataAttributes "] exists , then return false. Return true. Note: Setting a configuration from a dictionary will do a bit normalization. In particular, if both allow- and remove-lists are missing, it will interpret this as an empty remove-list. So {} itself is not a valid configuration, but it will be normalized to {removeElements:[],removeAttributes:[]} , which is. This normalization step was chosen in order to have a missing dictionary be consistent with an empty one, i.e., to have setHTMLUnsafe(txt) be consistent with setHTMLUnsafe(txt, {sanitizer: {}}) . 3. Algorithms To set and filter HTML , given an Element or DocumentFragment target , an Element contextElement , a string html , and a dictionary options , and a boolean safe : If safe and contextElement ’s local name is " script " and contextElement ’s namespace is the HTML namespace or the SVG namespace , then return. Let sanitizer be the result of calling get a sanitizer instance from options with options and safe . Let newChildren be the result of the HTML fragment parsing algorithm given contextElement , html , and true. Let fragment be a new DocumentFragment whose node document is contextElement ’s node document . For each node in newChildren , append node to fragment . Run sanitize on fragment using sanitizer and safe . Replace all with fragment within target . To get a sanitizer instance from options from a dictionary options with a boolean safe : Note: This algorithm works for both SetHTMLOptions and SetHTMLUnsafeOptions . They only differ in the defaults. Let sanitizerSpec be " default ". If options [" sanitizer "] exists , then: Set sanitizerSpec to options [" sanitizer "] Assert : sanitizerSpec is either a Sanitizer instance, a string which is a SanitizerPresets member, or a dictionary . If sanitizerSpec is a string : Assert : sanitizerSpec is " default " Set sanitizerSpec to the built-in safe default configuration . Assert : sanitizerSpec is either a Sanitizer instance, or a dictionary . If sanitizerSpec is a dictionary : Let sanitizer be a new Sanitizer instance. Let setConfigurationResult be the result of set a configuration with sanitizerSpec and not safe on sanitizer . If setConfigurationResult is false, throw a TypeError . Set sanitizerSpec to sanitizer . Assert : sanitizerSpec is a Sanitizer instance. Return sanitizerSpec . 3.1. Sanitize For the main sanitize operation, using a ParentNode node , a Sanitizer sanitizer , and a boolean safe , run these steps: Let configuration be the value of sanitizer ’s configuration . Assert : configuration is valid . If safe is true, then set configuration to the result of calling remove unsafe on configuration . Call sanitize core on node , configuration , and with handleJavascriptNavigationUrls set to safe . The sanitize core operation, using a ParentNode node , a SanitizerConfig configuration , and a boolean handleJavascriptNavigationUrls , recurses over the DOM tree beginning with node . It consistes of these steps: For each child of node ’s children : Assert : child implements Text , Comment , Element , ProcessingInstruction or DocumentType . Note: Currently, this algorithm is only called on output of the HTML parser for which this assertion should hold. DocumentType should only occur for parseHTML and parseHTMLUnsafe . If in the future this algorithm will be used in different contexts, this assumption needs to be re-examined. If child implements DocumentType , then continue . If child implements Text , then continue . If child implements Comment : If configuration [" comments "] is not true, then remove child . If child implements ProcessingInstruction : Let piTarget be child ’s target . If configuration [" processingInstructions "] exists : If configuration [" processingInstructions "] does not contain piTarget : Remove child . Otherwise: If configuration [" removeProcessingInstructions "] contains piTarget : Remove child . Otherwise: Let elementName be a SanitizerElementNamespace with child ’s local name and namespace . If configuration [" replaceWithChildrenElements "] exists and if configuration [" replaceWithChildrenElements "] contains elementName : Assert : node does not implement Document . Call sanitize core on child with configuration and handleJavascriptNavigationUrls . Let fragment be a new DocumentFragment whose node document is node ’s node document . For each innerChild of child ’s children , append innerChild to fragment . Replace child with fragment within node . NOTE: Replace shouldn’t throw here, since the structural preconditions for successful execution of the algorithm should be met. Continue . If configuration [" elements "] exists : If configuration [" elements "] does not contain elementName : Remove child . Continue . Otherwise: If configuration [" removeElements "] contains elementName : Remove child . Continue . If elementName equals «[ " name " → " template ", " namespace " → HTML namespace ]», then call sanitize core on child ’s template contents with configuration and handleJavascriptNavigationUrls . If child is a shadow host , then call sanitize core on child ’s shadow root with configuration and handleJavascriptNavigationUrls . For each attribute in child ’s attribute list : Let attrName be a SanitizerAttributeNamespace with attribute ’s local name and namespace . If is attribute allowed for attrName given configuration , and elementName is blocked , then remove attribute . If handleJavascriptNavigationUrls : If «[ elementName , attrName ]» matches an entry in the built-in navigating URL attributes list , and if attribute contains a javascript: URL , then remove attribute . If child ’s namespace is the MathML Namespace and attr ’s local name is " href " and attr ’s namespace is null or the XLink namespace and attr contains a javascript: URL , then remove attribute . If the built-in animating URL attributes list contains «[ elementName , attrName ]» and attr ’s value is " href " or " xlink:href ", then remove attribute . Call sanitize core on child with configuration and handleJavascriptNavigationUrls . To determine is attribute allowed for a SanitizerAttributeNamespace attrName , given a SanitizerConfig configuration , and an SanitizerElementNamespace elementName : Let elementWithLocalAttributes be an empty ordered map . If configuration [" elements "] exists and configuration [" elements "] contains elementName : Set elementWithLocalAttributes to the item in configuration [" elements "] where elementName [" name "] is item [" name "] and elementName [" namespace "] is item [" namespace "]. If elementWithLocalAttributes [" removeAttributes "] with default « » contains attrName : Return blocked . If configuration [" attributes "] exists : Let the boolean globallyAllowed be whether configuration [" attributes "] contains attrName . Let the boolean locallyAllowed be whether elementWithLocalAttributes [" attributes "] with default « » contains attrName . Let the boolean isDataAttributeAllowed be whether both, "data-" is a code unit prefix of attrName [ name ] and attrName [ namespace ] is null , and configuration [" dataAttributes "] is true. If neither globallyAllowed nor locallyAllowed nor isDataAttributeAllowed , return blocked . Otherwise: If elementWithLocalAttributes [" attributes "] exists and elementWithLocalAttributes [" attributes "] does not contain attrName : Return blocked . If configuration [" removeAttributes "] contains attrName : Return blocked . Return allowed . Note: Current browsers support javascript: URLs only when navigating. Since navigation itself is not an XSS threat we handle navigation to javascript: URLs, but not navigations in general. Declarative navigation falls into a handful of categories: Anchor elements. ( <a> in HTML and SVG namespaces) Form elements that trigger navigation as part of the form action. [MathML] allows any element to act as an anchor . [SVG11] animation. The first two are covered by the built-in navigating URL attributes list . The MathML case is covered by a seperate rule, because there is no formalism in this spec to cover a "per-namespace global" rule. The SVG animation case is covered by the built-in animating URL attributes list . But since the interpretation of SVG animation elements depends on the animation target, and since during sanitization we cannot know what the final target will be, the sanitize algorithm blocks any animation of href attributes. To determine whether an attribute contains a javascript: URL : Let url be the result of running the basic URL parser on attribute ’s value . If url is failure , then return false. Return whether url ’s scheme is " javascript ". 3.2. Modify the Configuration The configuration modifier methods are methods on Sanitizer that modify its configuration. They will maintain the validity criteria. They return a boolean which informs the caller whether the configuration was modified or not. s div s div To remove an element SanitizerElement element from a SanitizerConfig configuration : Note: This method requires that we distinguish 4 cases: Whether we have a global allow- or remove-list, whether they already contain element or not. Assert : configuration is valid . Set element to the result of canonicalize a sanitizer element with element . Set modified to the result of remove element from configuration [" replaceWithChildrenElements "]. If configuration [" elements "] exists : If configuration [" elements "] contains element : Comment : We have a global allow list and it contains element . Remove element from configuration [" elements "]. Return true. Comment : We have a global allow list and it does not contain element . Return modified . Otherwise: If configuration [" removeElements "] contains element : Comment : We have a global remove list and it already contains element . Return modified . Comment : We have a global remove list and it does not contain element . Add element to configuration [" removeElements "]. Return true. To remove an attribute SanitizerAttribute attribute from a SanitizerConfig configuration : Note: This method distinguishes two cases, namely whether we have a global allow- or a global remove-list. If we add attribute to the global remove-list, we may need to do additional work to fix up per-element allow- or remove-lists to maintain our validity criteria. If we remove attribute from a global allow-list, we may also have to remove it from local remove-lists. Assert : configuration is valid . Set attribute to the result of canonicalize a sanitizer attribute with attribute . If configuration [" attributes "] exists : Comment : If we have a global allow-list, we need to remove attribute . Set modified to the result of remove attribute from configuration [" attributes "]. Comment : Fix-up per-element allow and remove lists. If configuration [" elements "] exists : For each element of configuration [" elements "]: If element [" attributes "] with default « » contains attribute : Set modified to true. Remove attribute from element [" attributes "]. If element [" removeAttributes "] with default « » contains attribute : Assert : modified is true. Remove attribute from element [" removeAttributes "]. Return modified . Otherwise: Comment : If we have a global remove-list, we need to add attribute . If configuration [" removeAttributes "] contains attribute return false. Comment : Fix-up per-element allow and remove lists. If configuration [" elements "] exists : For each element in configuration [" elements "]: If element [" attributes "] with default « » contains attribute : Remove attribute from element [" attributes "]. If element [" removeAttributes "] with default « » contains attribute : Remove attribute from element [" removeAttributes "]. Append attribute to configuration [" removeAttributes "] Return true. To remove unsafe from a SanitizerConfig configuration , do this: Note: While this algorithm is called remove unsafe , we use the term "unsafe" strictly in the sense of this spec , to denote content that will execute JavaScript when inserted into the document. In other words, this method will remove oportunities for XSS. Assert : The key set of built-in safe baseline configuration equals « [ " removeElements ", " removeAttributes " ] ». Assert : configuration is valid . Let result be false. For each element in built-in safe baseline configuration [" removeElements "]: Call remove an element element from configuration . If the call returned true, set result to true. For each attribute in built-in safe baseline configuration [" removeAttributes "]: Call remove an attribute attribute from configuration . If the call returned true, set result to true. For each attribute listed in event handler content attributes : Call remove an attribute attribute from configuration . If the call returned true, set result to true. Return result . 3.3. Set the Configuration To set a configuration , given a dictionary configuration , a boolean allowCommentsPIsAndDataAttributes , and a Sanitizer sanitizer : Canonicalize configuration with allowCommentsPIsAndDataAttributes . If configuration is not valid , then return false. Set sanitizer ’s configuration to configuration . Return true. 3.4. Canonicalize the Configuration The Sanitizer stores the configuration in a canonical form, as this makes a number of processing steps easier. An elements list {elements: ["div"]} gets stored as {elements: [{name: "div", namespace: "http://www.w3.org/1999/xhtml"}] ). To canonicalize the configuration SanitizerConfig configuration with a boolean allowCommentsPIsAndDataAttributes : Note: We assume that configuration is the result of [WebIDL] converting a JavaScript value to a SanitizerConfig . If neither configuration [" elements "] nor configuration [" removeElements "] exist , then set configuration [" removeElements "] to « ». If neither configuration [" processingInstructions "] nor configuration [" removeProcessingInstructions "] exist : If allowCommentsPIsAndDataAttributes is true, then set configuration [" removeProcessingInstructions "] to « ». Otherwise, set configuration [" processingInstructions "] to « ». If neither configuration [" attributes "] nor configuration [" removeAttributes "] exist , then set configuration [" removeAttributes "] to « ». If configuration [" elements "] exists : Let elements be « ». For each element of configuration [" elements "] do: Append the result of canonicalize a sanitizer element with attributes element to elements . Set configuration [" elements "] to elements . If configuration [" removeElements "] exists : Let elements be « ». For each element of configuration [" removeElements "] do: Append the result of canonicalize a sanitizer element element to elements . Set configuration [" removeElements "] to elements . If configuration [" replaceWithChildrenElements "] exists : Let elements be « ». For each element of configuration [" replaceWithChildrenElements "] do: Append the result of canonicalize a sanitizer element element to elements . Set configuration [" replaceWithChildrenElements "] to elements . If configuration [" processingInstructions "] exists : Let processingInstructions be « ». For each pi of configuration [" processingInstructions "]: Append the result of canonicalize a sanitizer processing instruction pi to processingInstructions . Set configuration [" processingInstructions "] to processingInstructions . If configuration [" removeProcessingInstructions "] exists : Let processingInstructions be « ». For each pi of configuration [" removeProcessingInstructions "]: Append the result of canonicalize a sanitizer processing instruction pi to processingInstructions . Set configuration [" removeProcessingInstructions "] to processingInstructions . If configuration [" attributes "] exists : Let attributes be « ». For each attribute of configuration [" attributes "] do: Append the result of canonicalize a sanitizer attribute attribute to attributes . Set configuration [" attributes "] to attributes . If configuration [" removeAttributes "] exists : Let attributes be « ». For each attribute of configuration [" removeAttributes "] do: Append the result of canonicalize a sanitizer attribute attribute to attributes . Set configuration [" removeAttributes "] to attributes . If configuration [" comments "] does not exist , then set configuration [" comments "] to allowCommentsPIsAndDataAttributes . If configuration [" attributes "] exists and configuration [" dataAttributes "] does not exist , then set configuration [" dataAttributes "] to allowCommentsPIsAndDataAttributes . To canonicalize a sanitizer element with attributes a SanitizerElementWithAttributes element : Let result be the result of canonicalize a sanitizer element with element . If element is a dictionary : If element [" attributes "] exists : Let attributes be « ». For each attribute of element [" attributes "]: Append the result of canonicalize a sanitizer attribute with attribute to attributes . Set result [" attributes "] to attributes . If element [" removeAttributes "] exists : Let attributes be « ». For each attribute of element [" removeAttributes "]: Append the result of canonicalize a sanitizer attribute with attribute to attributes . Set result [" removeAttributes "] to attributes . If neither result [" attributes "] nor result [" removeAttributes "] exist : Set result [" removeAttributes "] to « ». Return result . In order moved to canonicalize a sanitizer element a SanitizerElement element , return the result of canonicalize a sanitizer name with element and the WHATWG HTML namespace as the default namespace. In order to canonicalize a sanitizer processing instruction pi , run the following steps: Assert : pi is either a DOMString or a dictionary . If pi is a DOMString , then return «[ " target " → pi ]». Assert : pi is a dictionary and pi ["target"] exists . Return «[ " target " → pi ["target"] ]». In order to canonicalize a sanitizer attribute a SanitizerAttribute attribute , return the result of canonicalize a sanitizer name with attribute and null as the default namespace. In order to canonicalize a sanitizer name name , with a default namespace defaultNamespace , run the following steps: Assert : name is either a DOMString or a dictionary . If name is a DOMString , then return «[ " name " → name , " namespace " → defaultNamespace ]». Assert : name is a dictionary and both name ["name"] and name ["namespace"] exist . If name ["namespace"] is the empty string, then set it to null. Return «[ " name " → name ["name"], " namespace " → name ["namespace"] ]». 3.5. Supporting Algorithms For the canonicalized element and attribute name lists used in this spec, list membership is based on matching both " name " and " namespace " entries: A Sanitizer name list contains an item if there exists an entry of list that is an ordered map , and where item ["name"] equals entry ["name"] and item ["namespace"] equals entry ["namespace"]. A Sanitizer target list contains a target target if there exists an entry of list that is an ordered map , and where target equals entry ["target"]. To remove an item from a list list : Set removed to false. For each entry of list : If item ["name"] equals entry ["name"] and item ["namespace"] equals entry ["namespace"]: Remove item entry from list . Set removed to true. Return removed . To add a name to a list , where name is canonicalized and list is an ordered map : If list contains name , then return. Append name to list . An item itemA is less than item itemB if: If itemA ["namespace"] is null: If itemB ["namespace"] is not null, then return true. Otherwise: If itemB ["namespace"] is null, then return false. If itemA ["namespace"] is code unit less than itemB ["namespace"], then return true. If itemA ["namespace"] is not itemB ["namespace"], then return false. Return itemA ["name"] is code unit less than itemB ["name"]. Equality for ordered sets is equality of its members, but without regard to order: Ordered sets A and B are equal if both A is a superset of B and B is a superset of A . An ordered map is a sequence of key and value tuples . Equality of ordered maps is equality of this sequence of tuples, when treated as an ordered set. Ordered maps A and B are equal if the ordered set consisting of A ’s entries and the ordered set of B ’s entries are equal . A list list has duplicates , if for any item of list , there is more than one entry in list where item ["name"] is entry ["name"] and item ["namespace"] is entry ["namespace"]. A list list has duplicate targets , if for any item of list , there is more than one entry in list where item ["target"] is entry ["target"]. To remove duplicates from a list list , Let result be « ». For each entry of list , add entry to result . Return result . The intersection of two lists A and B containing SanitizerElement is the same as set intersection , but with the set entries previously canonicalized : Let set A be « [] ». Let set B be « [] ». For each entry of A , append the result of canonicalize a sanitizer name entry to set A .

For each entry of B , append the result of canonicalize a sanitizer name entry to set B . Retrun the intersection of set A and set B . To determine not of a boolean bool , return false if bool is true, and return true otherwise. A Comment contains an explanatory text that applies to a particular point within an algorithm.

3.6. 1.1. Builtins Issue Reporting

There are five builtins:
Index Terms defined by this specification add , in § 3.5 allowAttribute(attribute) , in § 2.2 allowElement(element) , in § 2.2 allowProcessingInstruction(pi) , in § 2.2 attributes dict-member for SanitizerConfig , in § 2.3 dict-member for SanitizerElementNamespaceWithAttributes , in § 2.3 built-in animating URL attributes list , in § 3.6 built-in navigating URL attributes list , in § 3.6 built-in non-replaceable elements list , in § 3.6 built-in safe baseline configuration , in § 3.6 built-in safe default configuration , in § 3.6 canonicalize a sanitizer attribute , in § 3.4 canonicalize a sanitizer element , in § 3.4 canonicalize a sanitizer element with attributes , in § 3.4 canonicalize a sanitizer name , in § 3.4 canonicalize a sanitizer processing instruction , in § 3.4 canonicalize the configuration , in § 3.4 Comment , in § 3.5 comments , in § 2.3 configuration , in § 2.2 constructor() , in § 2.2 constructor(configuration) , in § 2.2 contains , in § 3.5 contains a javascript: URL , in § 3.1 contains a target , in § 3.5 dataAttributes , in § 2.3 "default" , in § 2.2 elements , in § 2.3 equal dfn for map , in § 3.5 dfn for set , in § 3.5 get() , in § 2.2 get a sanitizer instance from options , in § 3 handleJavascriptNavigationUrls , in § 3.1 has duplicates , in § 3.5 has duplicate targets , in § 3.5 intersection , in § 3.5 is attribute allowed , in § 3.1 less than item , in § 3.5 name dict-member for SanitizerAttributeNamespace , in § 2.3 dict-member for SanitizerElementNamespace , in § 2.3 namespace dict-member for SanitizerAttributeNamespace , in § 2.3 dict-member for SanitizerElementNamespace , in § 2.3 not , in § 3.5 parseHTML(html) , in § 2.1 parseHTML(html, options) , in § 2.1 parseHTMLUnsafe(html) , in § 2.1 parseHTMLUnsafe(html, options) , in § 2.1 processingInstructions , in § 2.3 remove , in § 3.5 remove an attribute , in § 3.2 remove an element , in § 3.2 removeAttribute(attribute) , in § 2.2 removeAttributes dict-member for SanitizerConfig , in § 2.3 dict-member for SanitizerElementNamespaceWithAttributes , in § 2.3 remove duplicates , in § 3.5 removeElement(element) , in § 2.2 removeElements , in § 2.3 removeProcessingInstruction(pi) , in § 2.2 removeProcessingInstructions , in § 2.3 remove unsafe , in § 3.2 removeUnsafe() , in § 2.2 replaceElementWithChildren(element) , in § 2.2 replaceWithChildrenElements , in § 2.3 Safe and unsafe , in § 1.2 sanitize , in § 3.1 sanitize core , in § 3.1 Sanitizer , in § 2.2 sanitizer dict-member for SetHTMLOptions , in § 2.2 dict-member for SetHTMLUnsafeOptions , in § 2.2 Sanitizer() , in § 2.2 SanitizerAttribute , in § 2.3 SanitizerAttributeNamespace , in § 2.3 SanitizerConfig , in § 2.3 Sanitizer(configuration) , in § 2.2 SanitizerElement , in § 2.3 SanitizerElementNamespace , in § 2.3 SanitizerElementNamespaceWithAttributes , in § 2.3 SanitizerElementWithAttributes , in § 2.3 SanitizerPI , in § 2.3 SanitizerPresets , in § 2.2 SanitizerProcessingInstruction , in § 2.3 set a configuration , in § 3.3 set and filter HTML , in § 3 setComments(allow) , in § 2.2 setDataAttributes(allow) , in § 2.2 setHTML(html) method for Element , in § 2.1 method for ShadowRoot , in § 2.1 setHTML(html, options) method for Element , in § 2.1 method for ShadowRoot , in § 2.1 SetHTMLOptions , in § 2.2 setHTMLUnsafe(html) method for Element , in § 2.1 method for ShadowRoot , in § 2.1 setHTMLUnsafe(html, options) method for Element , in § 2.1 method for ShadowRoot , in § 2.1 SetHTMLUnsafeOptions , in § 2.2 target , in § 2.3 valid , in § 2.4 Terms defined by reference [] defines the following terms: custom data attribute global attribute HTML fragment parsing algorithm parse HTML from a string report a warning to the console window.toStaticHTML() [DOM] defines the following terms: Comment Document DocumentFragment DocumentType Element Node ParentNode ProcessingInstruction ShadowRoot Text allow declarative shadow roots append attribute attribute list children content type get an attribute value local name (for Attr) local name (for Element) namespace (for Attr) namespace (for Element) node document remove remove an attribute replace replace all shadow host shadow root target [HTML] defines the following terms: CEReactions DOMParser HTMLTemplateElement current global object event handler content attribute innerHTML parseFromString(string, type) relevant global object template contents [INFRA] defines the following terms: allowed append (for list) append (for set) assert blocked boolean code unit less than code unit prefix contain (for list) contain (for map) continue difference empty entry exist for each get the keys HTML namespace intersection is iterate key list MathML namespace ordered map ordered set remove (for list) remove (for map) set set (for map) sort in ascending order string subset superset SVG namespace tuple user agent value with default XLink namespace [TRUSTED-TYPES] defines the following terms: TrustedHTML get trusted type compliant string [URL] defines the following terms: basic URL parser scheme [WebIDL] defines the following terms: DOMString Exposed TypeError boolean dictionary implements sequence this throw undefined References Normative References [DOM] Anne van Kesteren. DOM Standard . Living Standard. URL: https://dom.spec.whatwg.org/ [HTML] Anne van Kesteren; et al. HTML Standard . Living Standard. URL: https://html.spec.whatwg.org/multipage/ [INFRA] Anne van Kesteren; Domenic Denicola. Infra Standard . Living Standard. URL: https://infra.spec.whatwg.org/ [TRUSTED-TYPES] Krzysztof Kotowicz. Trusted Types . URL: https://w3c.github.io/trusted-types/dist/spec/ [URL] Anne van Kesteren. URL Standard . Living Standard. URL: https://url.spec.whatwg.org/ [WebIDL] Edgar Chen; Timothy Gu. Web IDL Standard . Living Standard. URL: https://webidl.spec.whatwg.org/ Non-Normative References [DOMPURIFY] DOMPurify . URL: https://github.com/cure53/DOMPurify [HTMLSanitizer] HTML Sanitizer . URL: https://www.bucksch.org/1/projects/mozilla/108153/ [MathML] Patrick D F Ion; Robert R Miner. Mathematical Markup Language (MathML™) 1.01 Specification . 7 March 2023. REC. URL: https://www.w3.org/TR/REC-MathML/ [MXSS] mXSS Attacks: Attacking well-secured Web-Applications by using innerHTML Mutations . URL: https://cure53.de/fp170.pdf [SafeMathML] MathML Safe List . URL: https://w3c.github.io/mathml-docs/mathml-safe-list [SVG11] Erik Dahlström; et al. Scalable Vector Graphics (SVG) 1.1 (Second Edition) . 16 August 2011. REC. URL: https://www.w3.org/TR/SVG11/ IDL Index { [ = {}); }; { [ = {}); }; { = {}); }; }; { ( = "default"; }; { ( = {}; }; [] { = "default"); // Query configuration: (); // Modify a Sanitizer's lists and fields: ); ); ); ); ); ); ); ); ); // Remove markup that executes script. (); }; { ; = "http://www.w3.org/1999/xhtml"; }; // Used by "elements" { ; ; }; ; ; { ; }; ; { ; ; }; ; { ; ; ; ; ; ; ; ; ; }; /* Boilerplate: script-dom-helper */ "use strict"; function query(sel) { return document.querySelector(sel); } function queryAll(sel) { return [...document.querySelectorAll(sel)]; } function iter(obj) { if(!obj) return []; var it = obj[Symbol.iterator]; if(it) return it; return Object.entries(obj); } function mk(tagname, attrs, ...children) { const el = document.createElement(tagname); for(const [k,v] of iter(attrs)) { if(k.slice(0,3) == "_on") { const eventName = k.slice(3); el.addEventListener(eventName, v); } else if(k[0] == "_") { // property, not attribute el[k.slice(1)] = v; } else { if(v === false || v == null) { continue; } else if(v === true) { el.setAttribute(k, ""); continue; } else { el.setAttribute(k, v); } } } append(el, children); return el; } /* Create shortcuts for every known HTML element */ [ "a", "abbr", "acronym", "address", "applet", "area", "article", "aside", "audio", "b", "base", "basefont", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "font", "footer", "form", "frame", "frameset", "head", "header", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "label", "legend", "li", "link", "main", "map", "mark", "meta", "meter", "nav", "nobr", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "pre", "progress", "q", "s", "samp", "script", "section", "select", "small", "source", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "u", "ul", "var", "video", "wbr", "xmp", ].forEach(tagname=> { mk[tagname] = (...args) => mk(tagname, ...args); }); function* nodesFromChildList(children) { for(const child of children.flat(Infinity)) { if(child instanceof Node) { yield child; } else { yield new Text(child); } } } function append(el, ...children) { for(const child of nodesFromChildList(children)) { if(el instanceof Node) el.appendChild(child); else el.push(child); } return el; } function insertAfter(el, ...children) { for(const child of nodesFromChildList(children)) { el.parentNode.insertBefore(child, el.nextSibling); } return el; } function clearContents(el) { el.innerHTML = ""; return el; } function parseHTML(markup) { if(markup.toLowerCase().trim().indexOf(' <!doctype') === 0) { const doc = document.implementation.createHTMLDocument(""); doc.documentElement.innerHTML = markup; return doc; } else { const el = mk.template({}); el.innerHTML = markup; return el.content; } } /* Boilerplate: script-dfn-panel */ "use strict"; { let dfnPanelData = { "03afaf9c": {"dfnID":"03afaf9c","dfnText":"empty","external":true,"refSections":[{"refs":[{"id":"ref-for-list-empty"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-list-empty\u2460"},{"id":"ref-for-list-empty\u2461"},{"id":"ref-for-list-empty\u2462"},{"id":"ref-for-list-empty\u2463"},{"id":"ref-for-list-empty\u2464"}],"title":"2.4. Configuration Invariants"}],"url":"https://infra.spec.whatwg.org/#list-empty"}, "0698d556": {"dfnID":"0698d556","dfnText":"string","external":true,"refSections":[{"refs":[{"id":"ref-for-string"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-string\u2460"},{"id":"ref-for-string\u2461"},{"id":"ref-for-string\u2462"}],"title":"3. Algorithms"}],"url":"https://infra.spec.whatwg.org/#string"}, "083465e4": {"dfnID":"083465e4","dfnText":"target","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-pi-target"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-pi-target"}, "0e0b900e": {"dfnID":"0e0b900e","dfnText":"remove","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-node-remove"},{"id":"ref-for-concept-node-remove\u2460"},{"id":"ref-for-concept-node-remove\u2461"},{"id":"ref-for-concept-node-remove\u2462"},{"id":"ref-for-concept-node-remove\u2463"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-node-remove"}, "0e6b2056": {"dfnID":"0e6b2056","dfnText":"set (for map)","external":true,"refSections":[{"refs":[{"id":"ref-for-map-set"},{"id":"ref-for-map-set\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-map-set\u2461"},{"id":"ref-for-map-set\u2462"},{"id":"ref-for-map-set\u2463"},{"id":"ref-for-map-set\u2464"},{"id":"ref-for-map-set\u2465"},{"id":"ref-for-map-set\u2466"},{"id":"ref-for-map-set\u2467"},{"id":"ref-for-map-set\u2468"},{"id":"ref-for-map-set\u2460\u24ea"}],"title":"3.4. Canonicalize the Configuration"}],"url":"https://infra.spec.whatwg.org/#map-set"}, "0e8de730": {"dfnID":"0e8de730","dfnText":"tuple","external":true,"refSections":[{"refs":[{"id":"ref-for-tuple"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#tuple"}, "1243a891": {"dfnID":"1243a891","dfnText":"exist","external":true,"refSections":[{"refs":[{"id":"ref-for-map-exists"},{"id":"ref-for-map-exists\u2460"},{"id":"ref-for-map-exists\u2461"},{"id":"ref-for-map-exists\u2462"},{"id":"ref-for-map-exists\u2463"},{"id":"ref-for-map-exists\u2464"},{"id":"ref-for-map-exists\u2465"},{"id":"ref-for-map-exists\u2466"},{"id":"ref-for-map-exists\u2467"},{"id":"ref-for-map-exists\u2468"},{"id":"ref-for-map-exists\u2460\u24ea"},{"id":"ref-for-map-exists\u2460\u2460"},{"id":"ref-for-map-exists\u2460\u2461"},{"id":"ref-for-map-exists\u2460\u2462"},{"id":"ref-for-map-exists\u2460\u2463"},{"id":"ref-for-map-exists\u2460\u2464"},{"id":"ref-for-map-exists\u2460\u2465"},{"id":"ref-for-map-exists\u2460\u2466"},{"id":"ref-for-map-exists\u2460\u2467"},{"id":"ref-for-map-exists\u2460\u2468"},{"id":"ref-for-map-exists\u2461\u24ea"},{"id":"ref-for-map-exists\u2461\u2460"},{"id":"ref-for-map-exists\u2461\u2461"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-map-exists\u2461\u2462"},{"id":"ref-for-map-exists\u2461\u2463"},{"id":"ref-for-map-exists\u2461\u2464"},{"id":"ref-for-map-exists\u2461\u2465"},{"id":"ref-for-map-exists\u2461\u2466"},{"id":"ref-for-map-exists\u2461\u2467"},{"id":"ref-for-map-exists\u2461\u2468"},{"id":"ref-for-map-exists\u2462\u24ea"},{"id":"ref-for-map-exists\u2462\u2460"},{"id":"ref-for-map-exists\u2462\u2461"},{"id":"ref-for-map-exists\u2462\u2462"},{"id":"ref-for-map-exists\u2462\u2463"},{"id":"ref-for-map-exists\u2462\u2464"},{"id":"ref-for-map-exists\u2462\u2465"},{"id":"ref-for-map-exists\u2462\u2466"},{"id":"ref-for-map-exists\u2462\u2467"},{"id":"ref-for-map-exists\u2462\u2468"},{"id":"ref-for-map-exists\u2463\u24ea"},{"id":"ref-for-map-exists\u2463\u2460"},{"id":"ref-for-map-exists\u2463\u2461"},{"id":"ref-for-map-exists\u2463\u2462"},{"id":"ref-for-map-exists\u2463\u2463"},{"id":"ref-for-map-exists\u2463\u2464"},{"id":"ref-for-map-exists\u2463\u2465"},{"id":"ref-for-map-exists\u2463\u2466"},{"id":"ref-for-map-exists\u2463\u2467"},{"id":"ref-for-map-exists\u2463\u2468"},{"id":"ref-for-map-exists\u2464\u24ea"},{"id":"ref-for-map-exists\u2464\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-map-exists\u2464\u2461"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-map-exists\u2464\u2462"},{"id":"ref-for-map-exists\u2464\u2463"},{"id":"ref-for-map-exists\u2464\u2464"},{"id":"ref-for-map-exists\u2464\u2465"},{"id":"ref-for-map-exists\u2464\u2466"},{"id":"ref-for-map-exists\u2464\u2467"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-map-exists\u2464\u2468"},{"id":"ref-for-map-exists\u2465\u24ea"},{"id":"ref-for-map-exists\u2465\u2460"},{"id":"ref-for-map-exists\u2465\u2461"},{"id":"ref-for-map-exists\u2465\u2462"},{"id":"ref-for-map-exists\u2465\u2463"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-map-exists\u2465\u2464"},{"id":"ref-for-map-exists\u2465\u2465"},{"id":"ref-for-map-exists\u2465\u2466"},{"id":"ref-for-map-exists\u2465\u2467"},{"id":"ref-for-map-exists\u2465\u2468"},{"id":"ref-for-map-exists\u2466\u24ea"},{"id":"ref-for-map-exists\u2466\u2460"},{"id":"ref-for-map-exists\u2466\u2461"},{"id":"ref-for-map-exists\u2466\u2462"},{"id":"ref-for-map-exists\u2466\u2463"},{"id":"ref-for-map-exists\u2466\u2464"},{"id":"ref-for-map-exists\u2466\u2465"},{"id":"ref-for-map-exists\u2466\u2466"},{"id":"ref-for-map-exists\u2466\u2467"},{"id":"ref-for-map-exists\u2466\u2468"},{"id":"ref-for-map-exists\u2467\u24ea"},{"id":"ref-for-map-exists\u2467\u2460"},{"id":"ref-for-map-exists\u2467\u2461"}],"title":"3.4. Canonicalize the Configuration"}],"url":"https://infra.spec.whatwg.org/#map-exists"}, "15e48c39": {"dfnID":"15e48c39","dfnText":"set","external":true,"refSections":[{"refs":[{"id":"ref-for-ordered-set"},{"id":"ref-for-ordered-set\u2460"},{"id":"ref-for-ordered-set\u2461"},{"id":"ref-for-ordered-set\u2462"},{"id":"ref-for-ordered-set\u2463"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#ordered-set"}, "1674281a": {"dfnID":"1674281a","dfnText":"get trusted type compliant string","external":true,"refSections":[{"refs":[{"id":"ref-for-get-trusted-type-compliant-string"},{"id":"ref-for-get-trusted-type-compliant-string\u2460"},{"id":"ref-for-get-trusted-type-compliant-string\u2461"}],"title":"2.1. Sanitizer API"}],"url":"https://w3c.github.io/trusted-types/dist/spec/#get-trusted-type-compliant-string"}, "16d07e10": {"dfnID":"16d07e10","dfnText":"for each","external":true,"refSections":[{"refs":[{"id":"ref-for-list-iterate"},{"id":"ref-for-list-iterate\u2460"},{"id":"ref-for-list-iterate\u2461"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-list-iterate\u2462"},{"id":"ref-for-list-iterate\u2463"},{"id":"ref-for-list-iterate\u2464"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-list-iterate\u2465"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-list-iterate\u2466"},{"id":"ref-for-list-iterate\u2467"},{"id":"ref-for-list-iterate\u2468"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-list-iterate\u2460\u24ea"},{"id":"ref-for-list-iterate\u2460\u2460"},{"id":"ref-for-list-iterate\u2460\u2461"},{"id":"ref-for-list-iterate\u2460\u2462"},{"id":"ref-for-list-iterate\u2460\u2463"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-list-iterate\u2460\u2464"},{"id":"ref-for-list-iterate\u2460\u2465"},{"id":"ref-for-list-iterate\u2460\u2466"},{"id":"ref-for-list-iterate\u2460\u2467"},{"id":"ref-for-list-iterate\u2460\u2468"},{"id":"ref-for-list-iterate\u2461\u24ea"},{"id":"ref-for-list-iterate\u2461\u2460"},{"id":"ref-for-list-iterate\u2461\u2461"},{"id":"ref-for-list-iterate\u2461\u2462"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-list-iterate\u2461\u2463"},{"id":"ref-for-list-iterate\u2461\u2464"},{"id":"ref-for-list-iterate\u2461\u2465"},{"id":"ref-for-list-iterate\u2461\u2466"},{"id":"ref-for-list-iterate\u2461\u2467"},{"id":"ref-for-list-iterate\u2461\u2468"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#list-iterate"}, "1cd7ff31": {"dfnID":"1cd7ff31","dfnText":"ShadowRoot","external":true,"refSections":[{"refs":[{"id":"ref-for-shadowroot"}],"title":"1.2. API Summary"},{"refs":[{"id":"ref-for-shadowroot\u2460"},{"id":"ref-for-shadowroot\u2461"},{"id":"ref-for-shadowroot\u2462"},{"id":"ref-for-shadowroot\u2463"},{"id":"ref-for-shadowroot\u2464"}],"title":"2.1. Sanitizer API"}],"url":"https://dom.spec.whatwg.org/#shadowroot"}, "296f3551": {"dfnID":"296f3551","dfnText":"Element","external":true,"refSections":[{"refs":[{"id":"ref-for-element"}],"title":"1. Introduction"},{"refs":[{"id":"ref-for-element\u2460"}],"title":"1.2. API Summary"},{"refs":[{"id":"ref-for-element\u2461"},{"id":"ref-for-element\u2462"},{"id":"ref-for-element\u2463"},{"id":"ref-for-element\u2464"},{"id":"ref-for-element\u2465"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-element\u2466"},{"id":"ref-for-element\u2467"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-element\u2468"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#element"}, "35feaa5b": {"dfnID":"35feaa5b","dfnText":"superset","external":true,"refSections":[{"refs":[{"id":"ref-for-set-superset"},{"id":"ref-for-set-superset\u2460"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#set-superset"}, "36858240": {"dfnID":"36858240","dfnText":"boolean","external":true,"refSections":[{"refs":[{"id":"ref-for-boolean"},{"id":"ref-for-boolean\u2460"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-boolean\u2461"},{"id":"ref-for-boolean\u2462"},{"id":"ref-for-boolean\u2463"},{"id":"ref-for-boolean\u2464"},{"id":"ref-for-boolean\u2465"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-boolean\u2466"}],"title":"3.3. Set the Configuration"},{"refs":[{"id":"ref-for-boolean\u2467"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-boolean\u2468"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#boolean"}, "37e32f12": {"dfnID":"37e32f12","dfnText":"report a warning to the console","external":true,"refSections":[{"refs":[{"id":"ref-for-report-a-warning-to-the-console"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"https://console.spec.whatwg.org/#report-a-warning-to-the-console"}, "384bdca4": {"dfnID":"384bdca4","dfnText":"custom data attribute","external":true,"refSections":[{"refs":[{"id":"ref-for-custom-data-attribute"},{"id":"ref-for-custom-data-attribute\u2460"},{"id":"ref-for-custom-data-attribute\u2461"},{"id":"ref-for-custom-data-attribute\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-custom-data-attribute\u2463"},{"id":"ref-for-custom-data-attribute\u2464"},{"id":"ref-for-custom-data-attribute\u2465"},{"id":"ref-for-custom-data-attribute\u2466"},{"id":"ref-for-custom-data-attribute\u2467"},{"id":"ref-for-custom-data-attribute\u2468"},{"id":"ref-for-custom-data-attribute\u2460\u24ea"},{"id":"ref-for-custom-data-attribute\u2460\u2460"},{"id":"ref-for-custom-data-attribute\u2460\u2461"}],"title":"2.4. Configuration Invariants"}],"url":"https://html.spec.whatwg.org/multipage/dom.html#custom-data-attribute"}, "3a711be7": {"dfnID":"3a711be7","dfnText":"scheme","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-url-scheme"}],"title":"3.1. Sanitize"}],"url":"https://url.spec.whatwg.org/#concept-url-scheme"}, "3e6df8da": {"dfnID":"3e6df8da","dfnText":"get an attribute value","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-element-attributes-get-value"},{"id":"ref-for-concept-element-attributes-get-value\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-element-attributes-get-value"}, "3e7fc2a2": {"dfnID":"3e7fc2a2","dfnText":"template contents","external":true,"refSections":[{"refs":[{"id":"ref-for-template-contents"},{"id":"ref-for-template-contents\u2460"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-template-contents\u2461"}],"title":"3.1. Sanitize"}],"url":"https://html.spec.whatwg.org/multipage/scripting.html#template-contents"}, "3f23ec71": {"dfnID":"3f23ec71","dfnText":"content type","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-document-content-type"},{"id":"ref-for-concept-document-content-type\u2460"}],"title":"2.1. Sanitizer API"}],"url":"https://dom.spec.whatwg.org/#concept-document-content-type"}, "4013a022": {"dfnID":"4013a022","dfnText":"this","external":true,"refSections":[{"refs":[{"id":"ref-for-this"},{"id":"ref-for-this\u2460"},{"id":"ref-for-this\u2461"},{"id":"ref-for-this\u2462"},{"id":"ref-for-this\u2463"},{"id":"ref-for-this\u2464"},{"id":"ref-for-this\u2465"},{"id":"ref-for-this\u2466"},{"id":"ref-for-this\u2467"},{"id":"ref-for-this\u2468"},{"id":"ref-for-this\u2460\u24ea"},{"id":"ref-for-this\u2460\u2460"},{"id":"ref-for-this\u2460\u2461"},{"id":"ref-for-this\u2460\u2462"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-this\u2460\u2463"},{"id":"ref-for-this\u2460\u2464"},{"id":"ref-for-this\u2460\u2465"},{"id":"ref-for-this\u2460\u2466"},{"id":"ref-for-this\u2460\u2467"},{"id":"ref-for-this\u2460\u2468"},{"id":"ref-for-this\u2461\u24ea"},{"id":"ref-for-this\u2461\u2460"},{"id":"ref-for-this\u2461\u2461"},{"id":"ref-for-this\u2461\u2462"},{"id":"ref-for-this\u2461\u2463"},{"id":"ref-for-this\u2461\u2464"},{"id":"ref-for-this\u2461\u2465"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"https://webidl.spec.whatwg.org/#this"}, "402ed79d": {"dfnID":"402ed79d","dfnText":"CEReactions","external":true,"refSections":[{"refs":[{"id":"ref-for-cereactions"},{"id":"ref-for-cereactions\u2460"},{"id":"ref-for-cereactions\u2461"},{"id":"ref-for-cereactions\u2462"}],"title":"2.1. Sanitizer API"}],"url":"https://html.spec.whatwg.org/multipage/custom-elements.html#cereactions"}, "4135591f": {"dfnID":"4135591f","dfnText":"code unit less than","external":true,"refSections":[{"refs":[{"id":"ref-for-code-unit-less-than"},{"id":"ref-for-code-unit-less-than\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-code-unit-less-than\u2461"},{"id":"ref-for-code-unit-less-than\u2462"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#code-unit-less-than"}, "414d5b08": {"dfnID":"414d5b08","dfnText":"remove an attribute","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-element-attributes-remove"},{"id":"ref-for-concept-element-attributes-remove\u2460"},{"id":"ref-for-concept-element-attributes-remove\u2461"},{"id":"ref-for-concept-element-attributes-remove\u2462"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-element-attributes-remove"}, "4943545e": {"dfnID":"4943545e","dfnText":"code unit prefix","external":true,"refSections":[{"refs":[{"id":"ref-for-code-unit-prefix"}],"title":"3.1. Sanitize"}],"url":"https://infra.spec.whatwg.org/#code-unit-prefix"}, "49a2843d": {"dfnID":"49a2843d","dfnText":"DocumentFragment","external":true,"refSections":[{"refs":[{"id":"ref-for-documentfragment"},{"id":"ref-for-documentfragment\u2460"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-documentfragment\u2461"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#documentfragment"}, "4e92bc80": {"dfnID":"4e92bc80","dfnText":"get the keys","external":true,"refSections":[{"refs":[{"id":"ref-for-map-getting-the-keys"}],"title":"3.2. Modify the Configuration"}],"url":"https://infra.spec.whatwg.org/#map-getting-the-keys"}, "4fd7ca14": {"dfnID":"4fd7ca14","dfnText":"replace all","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-node-replace-all"}],"title":"3. Algorithms"}],"url":"https://dom.spec.whatwg.org/#concept-node-replace-all"}, "51561373": {"dfnID":"51561373","dfnText":"replace","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-node-replace"},{"id":"ref-for-concept-node-replace\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-node-replace"}, "5216e1a0": {"dfnID":"5216e1a0","dfnText":"node document","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-node-document"},{"id":"ref-for-concept-node-document\u2460"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-concept-node-document\u2461"},{"id":"ref-for-concept-node-document\u2462"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-node-document"}, "53275e46": {"dfnID":"53275e46","dfnText":"append (for list)","external":true,"refSections":[{"refs":[{"id":"ref-for-list-append"},{"id":"ref-for-list-append\u2460"},{"id":"ref-for-list-append\u2461"},{"id":"ref-for-list-append\u2462"},{"id":"ref-for-list-append\u2463"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-list-append\u2464"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-list-append\u2465"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-list-append\u2466"},{"id":"ref-for-list-append\u2467"},{"id":"ref-for-list-append\u2468"},{"id":"ref-for-list-append\u2460\u24ea"},{"id":"ref-for-list-append\u2460\u2460"},{"id":"ref-for-list-append\u2460\u2461"},{"id":"ref-for-list-append\u2460\u2462"},{"id":"ref-for-list-append\u2460\u2463"},{"id":"ref-for-list-append\u2460\u2464"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-list-append\u2460\u2465"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#list-append"}, "5372cca8": {"dfnID":"5372cca8","dfnText":"boolean","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-boolean"},{"id":"ref-for-idl-boolean\u2460"},{"id":"ref-for-idl-boolean\u2461"},{"id":"ref-for-idl-boolean\u2462"},{"id":"ref-for-idl-boolean\u2463"},{"id":"ref-for-idl-boolean\u2464"},{"id":"ref-for-idl-boolean\u2465"},{"id":"ref-for-idl-boolean\u2466"},{"id":"ref-for-idl-boolean\u2467"},{"id":"ref-for-idl-boolean\u2468"},{"id":"ref-for-idl-boolean\u2460\u24ea"},{"id":"ref-for-idl-boolean\u2460\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-idl-boolean\u2460\u2461"},{"id":"ref-for-idl-boolean\u2460\u2462"}],"title":"2.3. The Configuration Dictionary"}],"url":"https://webidl.spec.whatwg.org/#idl-boolean"}, "543878fa": {"dfnID":"543878fa","dfnText":"append","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-node-append"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-node-append"}, "58a8f724": {"dfnID":"58a8f724","dfnText":"shadow host","external":true,"refSections":[{"refs":[{"id":"ref-for-element-shadow-host"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-element-shadow-host\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#element-shadow-host"}, "597088f0": {"dfnID":"597088f0","dfnText":"Text","external":true,"refSections":[{"refs":[{"id":"ref-for-text"},{"id":"ref-for-text\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#text"}, "5c7fa56b": {"dfnID":"5c7fa56b","dfnText":"subset","external":true,"refSections":[{"refs":[{"id":"ref-for-set-subset"}],"title":"2.4. Configuration Invariants"}],"url":"https://infra.spec.whatwg.org/#set-subset"}, "5c8f824f": {"dfnID":"5c8f824f","dfnText":"allow declarative shadow roots","external":true,"refSections":[{"refs":[{"id":"ref-for-document-allow-declarative-shadow-roots"},{"id":"ref-for-document-allow-declarative-shadow-roots\u2460"}],"title":"2.1. Sanitizer API"}],"url":"https://dom.spec.whatwg.org/#document-allow-declarative-shadow-roots"}, "5ecc2082": {"dfnID":"5ecc2082","dfnText":"sort in ascending order","external":true,"refSections":[{"refs":[{"id":"ref-for-list-sort-in-ascending-order"},{"id":"ref-for-list-sort-in-ascending-order\u2460"},{"id":"ref-for-list-sort-in-ascending-order\u2461"},{"id":"ref-for-list-sort-in-ascending-order\u2462"},{"id":"ref-for-list-sort-in-ascending-order\u2463"},{"id":"ref-for-list-sort-in-ascending-order\u2464"},{"id":"ref-for-list-sort-in-ascending-order\u2465"},{"id":"ref-for-list-sort-in-ascending-order\u2466"},{"id":"ref-for-list-sort-in-ascending-order\u2467"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"https://infra.spec.whatwg.org/#list-sort-in-ascending-order"}, "5f90bbfb": {"dfnID":"5f90bbfb","dfnText":"undefined","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-undefined"},{"id":"ref-for-idl-undefined\u2460"},{"id":"ref-for-idl-undefined\u2461"},{"id":"ref-for-idl-undefined\u2462"}],"title":"2.1. Sanitizer API"}],"url":"https://webidl.spec.whatwg.org/#idl-undefined"}, "649608b9": {"dfnID":"649608b9","dfnText":"list","external":true,"refSections":[{"refs":[{"id":"ref-for-list"},{"id":"ref-for-list\u2460"},{"id":"ref-for-list\u2461"},{"id":"ref-for-list\u2462"},{"id":"ref-for-list\u2463"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#list"}, "692595fe": {"dfnID":"692595fe","dfnText":"ordered set","external":true,"refSections":[{"refs":[{"id":"ref-for-ordered-set"},{"id":"ref-for-ordered-set\u2460"},{"id":"ref-for-ordered-set\u2461"},{"id":"ref-for-ordered-set\u2462"},{"id":"ref-for-ordered-set\u2463"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#ordered-set"}, "6d19ac93": {"dfnID":"6d19ac93","dfnText":"user agent","external":true,"refSections":[{"refs":[{"id":"ref-for-user-agent"}],"title":"3.6. Builtins"}],"url":"https://infra.spec.whatwg.org/#user-agent"}, "746cc3ba": {"dfnID":"746cc3ba","dfnText":"namespace (for Element)","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-element-namespace"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-concept-element-namespace\u2460"},{"id":"ref-for-concept-element-namespace\u2461"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-element-namespace"}, "769996cd": {"dfnID":"769996cd","dfnText":"parse HTML from a string","external":true,"refSections":[{"refs":[{"id":"ref-for-parse-html-from-a-string"},{"id":"ref-for-parse-html-from-a-string\u2460"}],"title":"2.1. Sanitizer API"}],"url":"https://html.spec.whatwg.org/#parse-html-from-a-string"}, "77211728": {"dfnID":"77211728","dfnText":"attribute list","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-element-attribute"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-element-attribute"}, "77b4c09a": {"dfnID":"77b4c09a","dfnText":"assert","external":true,"refSections":[{"refs":[{"id":"ref-for-assert"},{"id":"ref-for-assert\u2460"},{"id":"ref-for-assert\u2461"},{"id":"ref-for-assert\u2462"},{"id":"ref-for-assert\u2463"},{"id":"ref-for-assert\u2464"},{"id":"ref-for-assert\u2465"},{"id":"ref-for-assert\u2466"},{"id":"ref-for-assert\u2467"},{"id":"ref-for-assert\u2468"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-assert\u2460\u24ea"},{"id":"ref-for-assert\u2460\u2460"},{"id":"ref-for-assert\u2460\u2461"},{"id":"ref-for-assert\u2460\u2462"},{"id":"ref-for-assert\u2460\u2463"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-assert\u2460\u2464"},{"id":"ref-for-assert\u2460\u2465"},{"id":"ref-for-assert\u2460\u2466"},{"id":"ref-for-assert\u2460\u2467"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-assert\u2460\u2468"},{"id":"ref-for-assert\u2461\u24ea"},{"id":"ref-for-assert\u2461\u2460"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-assert\u2461\u2461"},{"id":"ref-for-assert\u2461\u2462"},{"id":"ref-for-assert\u2461\u2463"},{"id":"ref-for-assert\u2461\u2464"},{"id":"ref-for-assert\u2461\u2465"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-assert\u2461\u2466"},{"id":"ref-for-assert\u2461\u2467"},{"id":"ref-for-assert\u2461\u2468"},{"id":"ref-for-assert\u2462\u24ea"}],"title":"3.4. Canonicalize the Configuration"}],"url":"https://infra.spec.whatwg.org/#assert"}, "7a87d819": {"dfnID":"7a87d819","dfnText":"is","external":true,"refSections":[{"refs":[{"id":"ref-for-string-is"},{"id":"ref-for-string-is\u2460"},{"id":"ref-for-string-is\u2461"},{"id":"ref-for-string-is\u2462"},{"id":"ref-for-string-is\u2463"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-string-is\u2464"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-string-is\u2465"},{"id":"ref-for-string-is\u2466"},{"id":"ref-for-string-is\u2467"},{"id":"ref-for-string-is\u2468"},{"id":"ref-for-string-is\u2460\u24ea"},{"id":"ref-for-string-is\u2460\u2460"},{"id":"ref-for-string-is\u2460\u2461"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-string-is\u2460\u2462"},{"id":"ref-for-string-is\u2460\u2463"},{"id":"ref-for-string-is\u2460\u2464"},{"id":"ref-for-string-is\u2460\u2465"},{"id":"ref-for-string-is\u2460\u2466"},{"id":"ref-for-string-is\u2460\u2467"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#string-is"}, "7d4424b2": {"dfnID":"7d4424b2","dfnText":"remove (for map)","external":true,"refSections":[{"refs":[{"id":"ref-for-map-remove"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"https://infra.spec.whatwg.org/#map-remove"}, "802b0fdd": {"dfnID":"802b0fdd","dfnText":"value","external":true,"refSections":[{"refs":[{"id":"ref-for-map-value"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#map-value"}, "82ca3efc": {"dfnID":"82ca3efc","dfnText":"TypeError","external":true,"refSections":[{"refs":[{"id":"ref-for-exceptiondef-typeerror"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-exceptiondef-typeerror\u2460"}],"title":"3. Algorithms"}],"url":"https://webidl.spec.whatwg.org/#exceptiondef-typeerror"}, "83af367f": {"dfnID":"83af367f","dfnText":"blocked","external":true,"refSections":[{"refs":[{"id":"ref-for-blocked"},{"id":"ref-for-blocked\u2460"},{"id":"ref-for-blocked\u2461"},{"id":"ref-for-blocked\u2462"},{"id":"ref-for-blocked\u2463"}],"title":"3.1. Sanitize"}],"url":"https://infra.spec.whatwg.org/#blocked"}, "83ca4a87": {"dfnID":"83ca4a87","dfnText":"local name (for Element)","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-element-local-name"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-concept-element-local-name\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-element-local-name"}, "84b454ff": {"dfnID":"84b454ff","dfnText":"ordered map","external":true,"refSections":[{"refs":[{"id":"ref-for-ordered-map"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-ordered-map\u2460"},{"id":"ref-for-ordered-map\u2461"},{"id":"ref-for-ordered-map\u2462"},{"id":"ref-for-ordered-map\u2463"},{"id":"ref-for-ordered-map\u2464"},{"id":"ref-for-ordered-map\u2465"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#ordered-map"}, "85394472": {"dfnID":"85394472","dfnText":"Document","external":true,"refSections":[{"refs":[{"id":"ref-for-document"}],"title":"1.2. API Summary"},{"refs":[{"id":"ref-for-document\u2460"},{"id":"ref-for-document\u2461"},{"id":"ref-for-document\u2462"},{"id":"ref-for-document\u2463"},{"id":"ref-for-document\u2464"},{"id":"ref-for-document\u2465"},{"id":"ref-for-document\u2466"},{"id":"ref-for-document\u2467"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-document\u2468"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#document"}, "85a289c7": {"dfnID":"85a289c7","dfnText":"SVG namespace","external":true,"refSections":[{"refs":[{"id":"ref-for-svg-namespace"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-svg-namespace\u2460"},{"id":"ref-for-svg-namespace\u2461"},{"id":"ref-for-svg-namespace\u2462"},{"id":"ref-for-svg-namespace\u2463"},{"id":"ref-for-svg-namespace\u2464"},{"id":"ref-for-svg-namespace\u2465"}],"title":"3.6. Builtins"}],"url":"https://infra.spec.whatwg.org/#svg-namespace"}, "8855a9aa": {"dfnID":"8855a9aa","dfnText":"DOMString","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-DOMString"},{"id":"ref-for-idl-DOMString\u2460"},{"id":"ref-for-idl-DOMString\u2461"},{"id":"ref-for-idl-DOMString\u2462"},{"id":"ref-for-idl-DOMString\u2463"},{"id":"ref-for-idl-DOMString\u2464"},{"id":"ref-for-idl-DOMString\u2465"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-idl-DOMString\u2466"},{"id":"ref-for-idl-DOMString\u2467"},{"id":"ref-for-idl-DOMString\u2468"},{"id":"ref-for-idl-DOMString\u2460\u24ea"},{"id":"ref-for-idl-DOMString\u2460\u2460"},{"id":"ref-for-idl-DOMString\u2460\u2461"},{"id":"ref-for-idl-DOMString\u2460\u2462"},{"id":"ref-for-idl-DOMString\u2460\u2463"},{"id":"ref-for-idl-DOMString\u2460\u2464"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-idl-DOMString\u2460\u2465"},{"id":"ref-for-idl-DOMString\u2460\u2466"},{"id":"ref-for-idl-DOMString\u2460\u2467"},{"id":"ref-for-idl-DOMString\u2460\u2468"}],"title":"3.4. Canonicalize the Configuration"}],"url":"https://webidl.spec.whatwg.org/#idl-DOMString"}, "889e932f": {"dfnID":"889e932f","dfnText":"Exposed","external":true,"refSections":[{"refs":[{"id":"ref-for-Exposed"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"https://webidl.spec.whatwg.org/#Exposed"}, "8958b003": {"dfnID":"8958b003","dfnText":"entry","external":true,"refSections":[{"refs":[{"id":"ref-for-map-entry"},{"id":"ref-for-map-entry\u2460"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#map-entry"}, "9011c821": {"dfnID":"9011c821","dfnText":"DocumentType","external":true,"refSections":[{"refs":[{"id":"ref-for-documenttype"},{"id":"ref-for-documenttype\u2460"},{"id":"ref-for-documenttype\u2461"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#documenttype"}, "92b2d7da": {"dfnID":"92b2d7da","dfnText":"children","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-tree-child"},{"id":"ref-for-concept-tree-child\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-tree-child"}, "93ded71a": {"dfnID":"93ded71a","dfnText":"global attribute","external":true,"refSections":[{"refs":[{"id":"ref-for-global-attributes"}],"title":"2.4. Configuration Invariants"}],"url":"https://html.spec.whatwg.org/multipage/dom.html#global-attributes"}, "96c16e60": {"dfnID":"96c16e60","dfnText":"Node","external":true,"refSections":[{"refs":[{"id":"ref-for-node"}],"title":"1.2. API Summary"}],"url":"https://dom.spec.whatwg.org/#node"}, "99c988d6": {"dfnID":"99c988d6","dfnText":"remove (for list)","external":true,"refSections":[{"refs":[{"id":"ref-for-list-remove"},{"id":"ref-for-list-remove\u2460"},{"id":"ref-for-list-remove\u2461"},{"id":"ref-for-list-remove\u2462"},{"id":"ref-for-list-remove\u2463"},{"id":"ref-for-list-remove\u2464"},{"id":"ref-for-list-remove\u2465"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-list-remove\u2466"},{"id":"ref-for-list-remove\u2467"},{"id":"ref-for-list-remove\u2468"},{"id":"ref-for-list-remove\u2460\u24ea"}],"title":"3.2. Modify the Configuration"}],"url":"https://infra.spec.whatwg.org/#list-remove"}, "9cce47fd": {"dfnID":"9cce47fd","dfnText":"sequence","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-sequence"},{"id":"ref-for-idl-sequence\u2460"},{"id":"ref-for-idl-sequence\u2461"},{"id":"ref-for-idl-sequence\u2462"},{"id":"ref-for-idl-sequence\u2463"},{"id":"ref-for-idl-sequence\u2464"},{"id":"ref-for-idl-sequence\u2465"},{"id":"ref-for-idl-sequence\u2466"},{"id":"ref-for-idl-sequence\u2467"}],"title":"2.3. The Configuration Dictionary"}],"url":"https://webidl.spec.whatwg.org/#idl-sequence"}, "9ed8b710": {"dfnID":"9ed8b710","dfnText":"basic URL parser","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-basic-url-parser"}],"title":"3.1. Sanitize"}],"url":"https://url.spec.whatwg.org/#concept-basic-url-parser"}, "a0647283": {"dfnID":"a0647283","dfnText":"Comment","external":true,"refSections":[{"refs":[{"id":"ref-for-comment\u2467"},{"id":"ref-for-comment\u2468"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#comment"}, "a1797ffb": {"dfnID":"a1797ffb","dfnText":"difference","external":true,"refSections":[{"refs":[{"id":"ref-for-set-difference"},{"id":"ref-for-set-difference\u2460"},{"id":"ref-for-set-difference\u2461"},{"id":"ref-for-set-difference\u2462"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"https://infra.spec.whatwg.org/#set-difference"}, "a326add7": {"dfnID":"a326add7","dfnText":"contain (for map)","external":true,"refSections":[{"refs":[{"id":"ref-for-map-exists"},{"id":"ref-for-map-exists\u2460"},{"id":"ref-for-map-exists\u2461"},{"id":"ref-for-map-exists\u2462"},{"id":"ref-for-map-exists\u2463"},{"id":"ref-for-map-exists\u2464"},{"id":"ref-for-map-exists\u2465"},{"id":"ref-for-map-exists\u2466"},{"id":"ref-for-map-exists\u2467"},{"id":"ref-for-map-exists\u2468"},{"id":"ref-for-map-exists\u2460\u24ea"},{"id":"ref-for-map-exists\u2460\u2460"},{"id":"ref-for-map-exists\u2460\u2461"},{"id":"ref-for-map-exists\u2460\u2462"},{"id":"ref-for-map-exists\u2460\u2463"},{"id":"ref-for-map-exists\u2460\u2464"},{"id":"ref-for-map-exists\u2460\u2465"},{"id":"ref-for-map-exists\u2460\u2466"},{"id":"ref-for-map-exists\u2460\u2467"},{"id":"ref-for-map-exists\u2460\u2468"},{"id":"ref-for-map-exists\u2461\u24ea"},{"id":"ref-for-map-exists\u2461\u2460"},{"id":"ref-for-map-exists\u2461\u2461"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-map-exists\u2461\u2462"},{"id":"ref-for-map-exists\u2461\u2463"},{"id":"ref-for-map-exists\u2461\u2464"},{"id":"ref-for-map-exists\u2461\u2465"},{"id":"ref-for-map-exists\u2461\u2466"},{"id":"ref-for-map-exists\u2461\u2467"},{"id":"ref-for-map-exists\u2461\u2468"},{"id":"ref-for-map-exists\u2462\u24ea"},{"id":"ref-for-map-exists\u2462\u2460"},{"id":"ref-for-map-exists\u2462\u2461"},{"id":"ref-for-map-exists\u2462\u2462"},{"id":"ref-for-map-exists\u2462\u2463"},{"id":"ref-for-map-exists\u2462\u2464"},{"id":"ref-for-map-exists\u2462\u2465"},{"id":"ref-for-map-exists\u2462\u2466"},{"id":"ref-for-map-exists\u2462\u2467"},{"id":"ref-for-map-exists\u2462\u2468"},{"id":"ref-for-map-exists\u2463\u24ea"},{"id":"ref-for-map-exists\u2463\u2460"},{"id":"ref-for-map-exists\u2463\u2461"},{"id":"ref-for-map-exists\u2463\u2462"},{"id":"ref-for-map-exists\u2463\u2463"},{"id":"ref-for-map-exists\u2463\u2464"},{"id":"ref-for-map-exists\u2463\u2465"},{"id":"ref-for-map-exists\u2463\u2466"},{"id":"ref-for-map-exists\u2463\u2467"},{"id":"ref-for-map-exists\u2463\u2468"},{"id":"ref-for-map-exists\u2464\u24ea"},{"id":"ref-for-map-exists\u2464\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-map-exists\u2464\u2461"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-map-exists\u2464\u2462"},{"id":"ref-for-map-exists\u2464\u2463"},{"id":"ref-for-map-exists\u2464\u2464"},{"id":"ref-for-map-exists\u2464\u2465"},{"id":"ref-for-map-exists\u2464\u2466"},{"id":"ref-for-map-exists\u2464\u2467"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-map-exists\u2464\u2468"},{"id":"ref-for-map-exists\u2465\u24ea"},{"id":"ref-for-map-exists\u2465\u2460"},{"id":"ref-for-map-exists\u2465\u2461"},{"id":"ref-for-map-exists\u2465\u2462"},{"id":"ref-for-map-exists\u2465\u2463"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-map-exists\u2465\u2464"},{"id":"ref-for-map-exists\u2465\u2465"},{"id":"ref-for-map-exists\u2465\u2466"},{"id":"ref-for-map-exists\u2465\u2467"},{"id":"ref-for-map-exists\u2465\u2468"},{"id":"ref-for-map-exists\u2466\u24ea"},{"id":"ref-for-map-exists\u2466\u2460"},{"id":"ref-for-map-exists\u2466\u2461"},{"id":"ref-for-map-exists\u2466\u2462"},{"id":"ref-for-map-exists\u2466\u2463"},{"id":"ref-for-map-exists\u2466\u2464"},{"id":"ref-for-map-exists\u2466\u2465"},{"id":"ref-for-map-exists\u2466\u2466"},{"id":"ref-for-map-exists\u2466\u2467"},{"id":"ref-for-map-exists\u2466\u2468"},{"id":"ref-for-map-exists\u2467\u24ea"},{"id":"ref-for-map-exists\u2467\u2460"},{"id":"ref-for-map-exists\u2467\u2461"}],"title":"3.4. Canonicalize the Configuration"}],"url":"https://infra.spec.whatwg.org/#map-exists"}, "a32c65d4": {"dfnID":"a32c65d4","dfnText":"implements","external":true,"refSections":[{"refs":[{"id":"ref-for-implements"},{"id":"ref-for-implements\u2460"},{"id":"ref-for-implements\u2461"},{"id":"ref-for-implements\u2462"},{"id":"ref-for-implements\u2463"},{"id":"ref-for-implements\u2464"}],"title":"3.1. Sanitize"}],"url":"https://webidl.spec.whatwg.org/#implements"}, "a3b18719": {"dfnID":"a3b18719","dfnText":"append (for set)","external":true,"refSections":[{"refs":[{"id":"ref-for-set-append"},{"id":"ref-for-set-append\u2460"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#set-append"}, "ae8def21": {"dfnID":"ae8def21","dfnText":"contain (for list)","external":true,"refSections":[{"refs":[{"id":"ref-for-list-contain"},{"id":"ref-for-list-contain\u2460"},{"id":"ref-for-list-contain\u2461"},{"id":"ref-for-list-contain\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-list-contain\u2463"},{"id":"ref-for-list-contain\u2464"},{"id":"ref-for-list-contain\u2465"},{"id":"ref-for-list-contain\u2466"},{"id":"ref-for-list-contain\u2467"}],"title":"3.2. Modify the Configuration"}],"url":"https://infra.spec.whatwg.org/#list-contain"}, "b3955a25": {"dfnID":"b3955a25","dfnText":"namespace (for Attr)","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-attribute-namespace"},{"id":"ref-for-concept-attribute-namespace\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-attribute-namespace"}, "b4cfa5ce": {"dfnID":"b4cfa5ce","dfnText":"throw","external":true,"refSections":[{"refs":[{"id":"ref-for-dfn-throw"}],"title":"3. Algorithms"}],"url":"https://webidl.spec.whatwg.org/#dfn-throw"}, "b815ad04": {"dfnID":"b815ad04","dfnText":"parseFromString(string, type)","external":true,"refSections":[{"refs":[{"id":"ref-for-dom-domparser-parsefromstring"}],"title":"1.2. API Summary"}],"url":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring"}, "bdec671a": {"dfnID":"bdec671a","dfnText":"TrustedHTML","external":true,"refSections":[{"refs":[{"id":"ref-for-trustedhtml"},{"id":"ref-for-trustedhtml\u2460"},{"id":"ref-for-trustedhtml\u2461"},{"id":"ref-for-trustedhtml\u2462"},{"id":"ref-for-trustedhtml\u2463"},{"id":"ref-for-trustedhtml\u2464"}],"title":"2.1. Sanitizer API"}],"url":"https://w3c.github.io/trusted-types/dist/spec/#trustedhtml"}, "bec98d30": {"dfnID":"bec98d30","dfnText":"dictionary","external":true,"refSections":[{"refs":[{"id":"ref-for-dfn-dictionary"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dfn-dictionary\u2460"},{"id":"ref-for-dfn-dictionary\u2461"},{"id":"ref-for-dfn-dictionary\u2462"},{"id":"ref-for-dfn-dictionary\u2463"},{"id":"ref-for-dfn-dictionary\u2464"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-dfn-dictionary\u2465"}],"title":"3.3. Set the Configuration"},{"refs":[{"id":"ref-for-dfn-dictionary\u2466"},{"id":"ref-for-dfn-dictionary\u2467"},{"id":"ref-for-dfn-dictionary\u2468"},{"id":"ref-for-dfn-dictionary\u2460\u24ea"},{"id":"ref-for-dfn-dictionary\u2460\u2460"}],"title":"3.4. Canonicalize the Configuration"}],"url":"https://webidl.spec.whatwg.org/#dfn-dictionary"}, "boolean-not": {"dfnID":"boolean-not","dfnText":"not","external":false,"refSections":[{"refs":[{"id":"ref-for-boolean-not"}],"title":"3. Algorithms"}],"url":"#boolean-not"}, "built-in-animating-url-attributes-list": {"dfnID":"built-in-animating-url-attributes-list","dfnText":"built-in animating URL attributes list","external":false,"refSections":[{"refs":[{"id":"ref-for-built-in-animating-url-attributes-list"},{"id":"ref-for-built-in-animating-url-attributes-list\u2460"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-built-in-animating-url-attributes-list\u2461"}],"title":"3.6. Builtins"}],"url":"#built-in-animating-url-attributes-list"}, "built-in-navigating-url-attributes-list": {"dfnID":"built-in-navigating-url-attributes-list","dfnText":"built-in navigating URL attributes list","external":false,"refSections":[{"refs":[{"id":"ref-for-built-in-navigating-url-attributes-list"},{"id":"ref-for-built-in-navigating-url-attributes-list\u2460"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-built-in-navigating-url-attributes-list\u2461"}],"title":"3.6. Builtins"}],"url":"#built-in-navigating-url-attributes-list"}, "built-in-non-replaceable-elements-list": {"dfnID":"built-in-non-replaceable-elements-list","dfnText":"built-in non-replaceable elements list","external":false,"refSections":[{"refs":[{"id":"ref-for-built-in-non-replaceable-elements-list"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-built-in-non-replaceable-elements-list\u2460"},{"id":"ref-for-built-in-non-replaceable-elements-list\u2461"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-built-in-non-replaceable-elements-list\u2462"}],"title":"3.6. Builtins"}],"url":"#built-in-non-replaceable-elements-list"}, "built-in-safe-baseline-configuration": {"dfnID":"built-in-safe-baseline-configuration","dfnText":"built-in safe baseline configuration","external":false,"refSections":[{"refs":[{"id":"ref-for-built-in-safe-baseline-configuration"},{"id":"ref-for-built-in-safe-baseline-configuration\u2460"},{"id":"ref-for-built-in-safe-baseline-configuration\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-built-in-safe-baseline-configuration\u2462"}],"title":"3.6. Builtins"}],"url":"#built-in-safe-baseline-configuration"}, "built-in-safe-default-configuration": {"dfnID":"built-in-safe-default-configuration","dfnText":"built-in safe default configuration","external":false,"refSections":[{"refs":[{"id":"ref-for-built-in-safe-default-configuration"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-built-in-safe-default-configuration\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-built-in-safe-default-configuration\u2461"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-built-in-safe-default-configuration\u2462"}],"title":"3.6. Builtins"}],"url":"#built-in-safe-default-configuration"}, "c095490e": {"dfnID":"c095490e","dfnText":"ProcessingInstruction","external":true,"refSections":[{"refs":[{"id":"ref-for-processinginstruction"},{"id":"ref-for-processinginstruction\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#processinginstruction"}, "canonicalize-a-sanitizer-attribute": {"dfnID":"canonicalize-a-sanitizer-attribute","dfnText":"canonicalize a sanitizer attribute","external":false,"refSections":[{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-attribute"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-attribute\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-attribute\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-attribute\u2462"},{"id":"ref-for-canonicalize-a-sanitizer-attribute\u2463"},{"id":"ref-for-canonicalize-a-sanitizer-attribute\u2464"},{"id":"ref-for-canonicalize-a-sanitizer-attribute\u2465"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#canonicalize-a-sanitizer-attribute"}, "canonicalize-a-sanitizer-element": {"dfnID":"canonicalize-a-sanitizer-element","dfnText":"canonicalize a sanitizer element","external":false,"refSections":[{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-element"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-element\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-element\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-element\u2462"},{"id":"ref-for-canonicalize-a-sanitizer-element\u2463"},{"id":"ref-for-canonicalize-a-sanitizer-element\u2464"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#canonicalize-a-sanitizer-element"}, "canonicalize-a-sanitizer-element-with-attributes": {"dfnID":"canonicalize-a-sanitizer-element-with-attributes","dfnText":"canonicalize a sanitizer element with attributes","external":false,"refSections":[{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-element-with-attributes"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-element-with-attributes\u2460"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#canonicalize-a-sanitizer-element-with-attributes"}, "canonicalize-a-sanitizer-name": {"dfnID":"canonicalize-a-sanitizer-name","dfnText":"canonicalize a sanitizer name","external":false,"refSections":[{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-name"},{"id":"ref-for-canonicalize-a-sanitizer-name\u2460"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-name\u2461"},{"id":"ref-for-canonicalize-a-sanitizer-name\u2462"},{"id":"ref-for-canonicalize-a-sanitizer-name\u2463"},{"id":"ref-for-canonicalize-a-sanitizer-name\u2464"},{"id":"ref-for-canonicalize-a-sanitizer-name\u2465"}],"title":"3.5. Supporting Algorithms"}],"url":"#canonicalize-a-sanitizer-name"}, "canonicalize-a-sanitizer-processing-instruction": {"dfnID":"canonicalize-a-sanitizer-processing-instruction","dfnText":"canonicalize a sanitizer processing instruction","external":false,"refSections":[{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-processing-instruction"},{"id":"ref-for-canonicalize-a-sanitizer-processing-instruction\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-processing-instruction\u2461"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-canonicalize-a-sanitizer-processing-instruction\u2462"},{"id":"ref-for-canonicalize-a-sanitizer-processing-instruction\u2463"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#canonicalize-a-sanitizer-processing-instruction"}, "cc6d9aed": {"dfnID":"cc6d9aed","dfnText":"event handler content attribute","external":true,"refSections":[{"refs":[{"id":"ref-for-event-handler-content-attributes"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-event-handler-content-attributes\u2460"},{"id":"ref-for-event-handler-content-attributes\u2461"},{"id":"ref-for-event-handler-content-attributes\u2462"}],"title":"3.6. Builtins"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-content-attributes"}, "ce3d2bbb": {"dfnID":"ce3d2bbb","dfnText":"current global object","external":true,"refSections":[{"refs":[{"id":"ref-for-current-global-object"}],"title":"2.1. Sanitizer API"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#current-global-object"}, "ce720392": {"dfnID":"ce720392","dfnText":"shadow root","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-element-shadow-root"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-element-shadow-root"}, "comment": {"dfnID":"comment","dfnText":"Comment","external":false,"refSections":[{"refs":[{"id":"ref-for-comment"},{"id":"ref-for-comment\u2460"},{"id":"ref-for-comment\u2461"},{"id":"ref-for-comment\u2462"},{"id":"ref-for-comment\u2463"},{"id":"ref-for-comment\u2464"},{"id":"ref-for-comment\u2465"},{"id":"ref-for-comment\u2466"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-comment\u2460\u24ea"},{"id":"ref-for-comment\u2460\u2460"},{"id":"ref-for-comment\u2460\u2461"},{"id":"ref-for-comment\u2460\u2462"},{"id":"ref-for-comment\u2460\u2463"},{"id":"ref-for-comment\u2460\u2464"},{"id":"ref-for-comment\u2460\u2465"},{"id":"ref-for-comment\u2460\u2466"}],"title":"3.2. Modify the Configuration"}],"url":"#comment"}, "contains-a-javascript-url": {"dfnID":"contains-a-javascript-url","dfnText":"contains a javascript: URL","external":false,"refSections":[{"refs":[{"id":"ref-for-contains-a-javascript-url"},{"id":"ref-for-contains-a-javascript-url\u2460"}],"title":"3.1. Sanitize"}],"url":"#contains-a-javascript-url"}, "d14a6f26": {"dfnID":"d14a6f26","dfnText":"key","external":true,"refSections":[{"refs":[{"id":"ref-for-map-key"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#map-key"}, "d354f084": {"dfnID":"d354f084","dfnText":"window.toStaticHTML()","external":true,"refSections":[{"refs":[{"id":"ref-for-something"}],"title":"5. Acknowledgements"}],"url":"https://msdn.microsoft.com/en-us/library/cc848922(v=vs.85).aspx"}, "d4127354": {"dfnID":"d4127354","dfnText":"innerHTML","external":true,"refSections":[{"refs":[{"id":"ref-for-dom-element-innerhtml"}],"title":"1. Introduction"},{"refs":[{"id":"ref-for-dom-element-innerhtml\u2460"}],"title":"1.2. API Summary"}],"url":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-element-innerhtml"}, "daf5c14d": {"dfnID":"daf5c14d","dfnText":"allowed","external":true,"refSections":[{"refs":[{"id":"ref-for-allowed"}],"title":"3.1. Sanitize"}],"url":"https://infra.spec.whatwg.org/#allowed"}, "db0a062f": {"dfnID":"db0a062f","dfnText":"attribute","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-attribute"}],"title":"2.4. Configuration Invariants"}],"url":"https://dom.spec.whatwg.org/#concept-attribute"}, "dbd32973": {"dfnID":"dbd32973","dfnText":"DOMParser","external":true,"refSections":[{"refs":[{"id":"ref-for-domparser"}],"title":"1.2. API Summary"}],"url":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparser"}, "dictdef-sanitizerattributenamespace": {"dfnID":"dictdef-sanitizerattributenamespace","dfnText":"SanitizerAttributeNamespace","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sanitizerattributenamespace"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-dictdef-sanitizerattributenamespace\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dictdef-sanitizerattributenamespace\u2461"},{"id":"ref-for-dictdef-sanitizerattributenamespace\u2462"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dictdef-sanitizerattributenamespace\u2463"}],"title":"3.5. Supporting Algorithms"}],"url":"#dictdef-sanitizerattributenamespace"}, "dictdef-sanitizerconfig": {"dfnID":"dictdef-sanitizerconfig","dfnText":"SanitizerConfig","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sanitizerconfig"},{"id":"ref-for-dictdef-sanitizerconfig\u2460"},{"id":"ref-for-dictdef-sanitizerconfig\u2461"},{"id":"ref-for-dictdef-sanitizerconfig\u2462"},{"id":"ref-for-dictdef-sanitizerconfig\u2463"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dictdef-sanitizerconfig\u2464"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dictdef-sanitizerconfig\u2465"},{"id":"ref-for-dictdef-sanitizerconfig\u2466"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dictdef-sanitizerconfig\u2467"},{"id":"ref-for-dictdef-sanitizerconfig\u2468"},{"id":"ref-for-dictdef-sanitizerconfig\u2460\u24ea"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dictdef-sanitizerconfig\u2460\u2460"},{"id":"ref-for-dictdef-sanitizerconfig\u2460\u2461"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dictdef-sanitizerconfig"}, "dictdef-sanitizerelementnamespace": {"dfnID":"dictdef-sanitizerelementnamespace","dfnText":"SanitizerElementNamespace","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sanitizerelementnamespace"},{"id":"ref-for-dictdef-sanitizerelementnamespace\u2460"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-dictdef-sanitizerelementnamespace\u2461"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dictdef-sanitizerelementnamespace\u2462"},{"id":"ref-for-dictdef-sanitizerelementnamespace\u2463"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dictdef-sanitizerelementnamespace\u2464"}],"title":"3.5. Supporting Algorithms"}],"url":"#dictdef-sanitizerelementnamespace"}, "dictdef-sanitizerelementnamespacewithattributes": {"dfnID":"dictdef-sanitizerelementnamespacewithattributes","dfnText":"SanitizerElementNamespaceWithAttributes","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sanitizerelementnamespacewithattributes"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-dictdef-sanitizerelementnamespacewithattributes\u2460"}],"title":"2.4. Configuration Invariants"}],"url":"#dictdef-sanitizerelementnamespacewithattributes"}, "dictdef-sanitizerprocessinginstruction": {"dfnID":"dictdef-sanitizerprocessinginstruction","dfnText":"SanitizerProcessingInstruction","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sanitizerprocessinginstruction"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-dictdef-sanitizerprocessinginstruction\u2460"}],"title":"2.4. Configuration Invariants"}],"url":"#dictdef-sanitizerprocessinginstruction"}, "dictdef-sethtmloptions": {"dfnID":"dictdef-sethtmloptions","dfnText":"SetHTMLOptions","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sethtmloptions"},{"id":"ref-for-dictdef-sethtmloptions\u2460"},{"id":"ref-for-dictdef-sethtmloptions\u2461"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-dictdef-sethtmloptions\u2462"}],"title":"3. Algorithms"}],"url":"#dictdef-sethtmloptions"}, "dictdef-sethtmlunsafeoptions": {"dfnID":"dictdef-sethtmlunsafeoptions","dfnText":"SetHTMLUnsafeOptions","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-sethtmlunsafeoptions"},{"id":"ref-for-dictdef-sethtmlunsafeoptions\u2460"},{"id":"ref-for-dictdef-sethtmlunsafeoptions\u2461"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-dictdef-sethtmlunsafeoptions\u2462"}],"title":"3. Algorithms"}],"url":"#dictdef-sethtmlunsafeoptions"}, "dom-document-parsehtml": {"dfnID":"dom-document-parsehtml","dfnText":"parseHTML(html, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-document-parsehtml"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-dom-document-parsehtml\u2460"}],"title":"3.1. Sanitize"}],"url":"#dom-document-parsehtml"}, "dom-document-parsehtml-html-options-html": {"dfnID":"dom-document-parsehtml-html-options-html","dfnText":"html","external":false,"refSections":[],"url":"#dom-document-parsehtml-html-options-html"}, "dom-document-parsehtml-html-options-options": {"dfnID":"dom-document-parsehtml-html-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-document-parsehtml-html-options-options"}, "dom-document-parsehtmlunsafe": {"dfnID":"dom-document-parsehtmlunsafe","dfnText":"parseHTMLUnsafe(html, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-document-parsehtmlunsafe"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-dom-document-parsehtmlunsafe\u2460"}],"title":"3.1. Sanitize"}],"url":"#dom-document-parsehtmlunsafe"}, "dom-document-parsehtmlunsafe-html-options-html": {"dfnID":"dom-document-parsehtmlunsafe-html-options-html","dfnText":"html","external":false,"refSections":[],"url":"#dom-document-parsehtmlunsafe-html-options-html"}, "dom-document-parsehtmlunsafe-html-options-options": {"dfnID":"dom-document-parsehtmlunsafe-html-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-document-parsehtmlunsafe-html-options-options"}, "dom-element-sethtml": {"dfnID":"dom-element-sethtml","dfnText":"setHTML(html, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-element-sethtml"},{"id":"ref-for-dom-element-sethtml\u2460"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-dom-element-sethtml\u2461"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-element-sethtml"}, "dom-element-sethtml-html-options-html": {"dfnID":"dom-element-sethtml-html-options-html","dfnText":"html","external":false,"refSections":[],"url":"#dom-element-sethtml-html-options-html"}, "dom-element-sethtml-html-options-options": {"dfnID":"dom-element-sethtml-html-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-element-sethtml-html-options-options"}, "dom-element-sethtmlunsafe": {"dfnID":"dom-element-sethtmlunsafe","dfnText":"setHTMLUnsafe(html, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-element-sethtmlunsafe"},{"id":"ref-for-dom-element-sethtmlunsafe\u2460"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-dom-element-sethtmlunsafe\u2461"}],"title":"2.4. Configuration Invariants"}],"url":"#dom-element-sethtmlunsafe"}, "dom-element-sethtmlunsafe-html-options-html": {"dfnID":"dom-element-sethtmlunsafe-html-options-html","dfnText":"html","external":false,"refSections":[],"url":"#dom-element-sethtmlunsafe-html-options-html"}, "dom-element-sethtmlunsafe-html-options-options": {"dfnID":"dom-element-sethtmlunsafe-html-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-element-sethtmlunsafe-html-options-options"}, "dom-sanitizer-allowattribute": {"dfnID":"dom-sanitizer-allowattribute","dfnText":"allowAttribute(attribute)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-allowattribute"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-allowattribute"}, "dom-sanitizer-allowattribute-attribute-attribute": {"dfnID":"dom-sanitizer-allowattribute-attribute-attribute","dfnText":"attribute","external":false,"refSections":[],"url":"#dom-sanitizer-allowattribute-attribute-attribute"}, "dom-sanitizer-allowelement": {"dfnID":"dom-sanitizer-allowelement","dfnText":"allowElement(element)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-allowelement"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-allowelement"}, "dom-sanitizer-allowelement-element-element": {"dfnID":"dom-sanitizer-allowelement-element-element","dfnText":"element","external":false,"refSections":[],"url":"#dom-sanitizer-allowelement-element-element"}, "dom-sanitizer-allowprocessinginstruction": {"dfnID":"dom-sanitizer-allowprocessinginstruction","dfnText":"allowProcessingInstruction(pi)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-allowprocessinginstruction"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-allowprocessinginstruction"}, "dom-sanitizer-allowprocessinginstruction-pi-pi": {"dfnID":"dom-sanitizer-allowprocessinginstruction-pi-pi","dfnText":"pi","external":false,"refSections":[],"url":"#dom-sanitizer-allowprocessinginstruction-pi-pi"}, "dom-sanitizer-constructor": {"dfnID":"dom-sanitizer-constructor","dfnText":"constructor(configuration)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-constructor"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-constructor"}, "dom-sanitizer-get": {"dfnID":"dom-sanitizer-get","dfnText":"get()","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-get"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizer-get\u2460"}],"title":"2.4. Configuration Invariants"}],"url":"#dom-sanitizer-get"}, "dom-sanitizer-removeattribute": {"dfnID":"dom-sanitizer-removeattribute","dfnText":"removeAttribute(attribute)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-removeattribute"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-removeattribute"}, "dom-sanitizer-removeattribute-attribute-attribute": {"dfnID":"dom-sanitizer-removeattribute-attribute-attribute","dfnText":"attribute","external":false,"refSections":[],"url":"#dom-sanitizer-removeattribute-attribute-attribute"}, "dom-sanitizer-removeelement": {"dfnID":"dom-sanitizer-removeelement","dfnText":"removeElement(element)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-removeelement"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-removeelement"}, "dom-sanitizer-removeelement-element-element": {"dfnID":"dom-sanitizer-removeelement-element-element","dfnText":"element","external":false,"refSections":[],"url":"#dom-sanitizer-removeelement-element-element"}, "dom-sanitizer-removeprocessinginstruction": {"dfnID":"dom-sanitizer-removeprocessinginstruction","dfnText":"removeProcessingInstruction(pi)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-removeprocessinginstruction"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-removeprocessinginstruction"}, "dom-sanitizer-removeprocessinginstruction-pi-pi": {"dfnID":"dom-sanitizer-removeprocessinginstruction-pi-pi","dfnText":"pi","external":false,"refSections":[],"url":"#dom-sanitizer-removeprocessinginstruction-pi-pi"}, "dom-sanitizer-removeunsafe": {"dfnID":"dom-sanitizer-removeunsafe","dfnText":"removeUnsafe()","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-removeunsafe"},{"id":"ref-for-dom-sanitizer-removeunsafe\u2460"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-removeunsafe"}, "dom-sanitizer-replaceelementwithchildren": {"dfnID":"dom-sanitizer-replaceelementwithchildren","dfnText":"replaceElementWithChildren(element)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-replaceelementwithchildren"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-replaceelementwithchildren"}, "dom-sanitizer-replaceelementwithchildren-element-element": {"dfnID":"dom-sanitizer-replaceelementwithchildren-element-element","dfnText":"element","external":false,"refSections":[],"url":"#dom-sanitizer-replaceelementwithchildren-element-element"}, "dom-sanitizer-sanitizer-configuration-configuration": {"dfnID":"dom-sanitizer-sanitizer-configuration-configuration","dfnText":"configuration","external":false,"refSections":[],"url":"#dom-sanitizer-sanitizer-configuration-configuration"}, "dom-sanitizer-setcomments": {"dfnID":"dom-sanitizer-setcomments","dfnText":"setComments(allow)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-setcomments"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-setcomments"}, "dom-sanitizer-setcomments-allow-allow": {"dfnID":"dom-sanitizer-setcomments-allow-allow","dfnText":"allow","external":false,"refSections":[],"url":"#dom-sanitizer-setcomments-allow-allow"}, "dom-sanitizer-setdataattributes": {"dfnID":"dom-sanitizer-setdataattributes","dfnText":"setDataAttributes(allow)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizer-setdataattributes"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizer-setdataattributes"}, "dom-sanitizer-setdataattributes-allow-allow": {"dfnID":"dom-sanitizer-setdataattributes-allow-allow","dfnText":"allow","external":false,"refSections":[],"url":"#dom-sanitizer-setdataattributes-allow-allow"}, "dom-sanitizerattributenamespace-name": {"dfnID":"dom-sanitizerattributenamespace-name","dfnText":"name","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerattributenamespace-name"}],"title":"3.1. Sanitize"}],"url":"#dom-sanitizerattributenamespace-name"}, "dom-sanitizerattributenamespace-namespace": {"dfnID":"dom-sanitizerattributenamespace-namespace","dfnText":"_namespace","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerattributenamespace-namespace"}],"title":"3.1. Sanitize"}],"url":"#dom-sanitizerattributenamespace-namespace"}, "dom-sanitizerconfig-attributes": {"dfnID":"dom-sanitizerconfig-attributes","dfnText":"attributes","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-attributes"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2463"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2464"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2465"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2466"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2467"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2468"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u24ea"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2461"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2463"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2464"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2465"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2466"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2467"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2460\u2468"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u24ea"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2460"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2461"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2462"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2463"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2464"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2465"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2466"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2467"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-attributes\u2461\u2468"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u24ea"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2460"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2462"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2463"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2464"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2465"},{"id":"ref-for-dom-sanitizerconfig-attributes\u2462\u2466"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-attributes"}, "dom-sanitizerconfig-comments": {"dfnID":"dom-sanitizerconfig-comments","dfnText":"comments","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-comments"},{"id":"ref-for-dom-sanitizerconfig-comments\u2460"},{"id":"ref-for-dom-sanitizerconfig-comments\u2461"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-comments\u2462"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-comments\u2463"},{"id":"ref-for-dom-sanitizerconfig-comments\u2464"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-comments"}, "dom-sanitizerconfig-dataattributes": {"dfnID":"dom-sanitizerconfig-dataattributes","dfnText":"dataAttributes","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-dataattributes"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2461"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2463"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2464"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2465"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2466"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2467"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2468"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2461"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2463"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2464"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2465"},{"id":"ref-for-dom-sanitizerconfig-dataattributes\u2460\u2466"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-dataattributes"}, "dom-sanitizerconfig-elements": {"dfnID":"dom-sanitizerconfig-elements","dfnText":"elements","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-elements"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462"},{"id":"ref-for-dom-sanitizerconfig-elements\u2463"},{"id":"ref-for-dom-sanitizerconfig-elements\u2464"},{"id":"ref-for-dom-sanitizerconfig-elements\u2465"},{"id":"ref-for-dom-sanitizerconfig-elements\u2466"},{"id":"ref-for-dom-sanitizerconfig-elements\u2467"},{"id":"ref-for-dom-sanitizerconfig-elements\u2468"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2461"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2463"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2464"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2465"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2466"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2467"},{"id":"ref-for-dom-sanitizerconfig-elements\u2460\u2468"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u24ea"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2460"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2461"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2462"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2463"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2464"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2465"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2466"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2467"},{"id":"ref-for-dom-sanitizerconfig-elements\u2461\u2468"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u24ea"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2460"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2461"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2462"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2463"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2464"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2465"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2466"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2467"},{"id":"ref-for-dom-sanitizerconfig-elements\u2462\u2468"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-elements\u2463\u24ea"},{"id":"ref-for-dom-sanitizerconfig-elements\u2463\u2460"},{"id":"ref-for-dom-sanitizerconfig-elements\u2463\u2461"},{"id":"ref-for-dom-sanitizerconfig-elements\u2463\u2462"},{"id":"ref-for-dom-sanitizerconfig-elements\u2463\u2463"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-elements"}, "dom-sanitizerconfig-processinginstructions": {"dfnID":"dom-sanitizerconfig-processinginstructions","dfnText":"processingInstructions","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-processinginstructions"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2461"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2462"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2463"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2464"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2465"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2466"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2467"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2468"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2461"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2463"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2464"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2465"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2466"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2467"},{"id":"ref-for-dom-sanitizerconfig-processinginstructions\u2460\u2468"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-processinginstructions"}, "dom-sanitizerconfig-removeattributes": {"dfnID":"dom-sanitizerconfig-removeattributes","dfnText":"removeAttributes","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeattributes"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2463"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2464"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2465"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2466"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2467"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2468"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2461"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2463"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2464"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2465"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2466"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2467"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2460\u2468"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u24ea"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2460"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2463"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2464"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2465"},{"id":"ref-for-dom-sanitizerconfig-removeattributes\u2461\u2466"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-removeattributes"}, "dom-sanitizerconfig-removeelements": {"dfnID":"dom-sanitizerconfig-removeelements","dfnText":"removeElements","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeelements"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2461"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2463"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeelements\u2464"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2465"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2466"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2467"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2468"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2461"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2463"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2464"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2465"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2466"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2467"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2460\u2468"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2461\u24ea"},{"id":"ref-for-dom-sanitizerconfig-removeelements\u2461\u2460"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-removeelements"}, "dom-sanitizerconfig-removeprocessinginstructions": {"dfnID":"dom-sanitizerconfig-removeprocessinginstructions","dfnText":"removeProcessingInstructions","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2460"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2461"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2463"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2464"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2465"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2466"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2467"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2468"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2460\u2461"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2460\u2462"},{"id":"ref-for-dom-sanitizerconfig-removeprocessinginstructions\u2460\u2463"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-removeprocessinginstructions"}, "dom-sanitizerconfig-replacewithchildrenelements": {"dfnID":"dom-sanitizerconfig-replacewithchildrenelements","dfnText":"replaceWithChildrenElements","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2461"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2462"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2463"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2464"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2465"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2466"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2467"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2468"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u24ea"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2460"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2461"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2462"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2463"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2464"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2465"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2466"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2467"},{"id":"ref-for-dom-sanitizerconfig-replacewithchildrenelements\u2460\u2468"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerconfig-replacewithchildrenelements"}, "dom-sanitizerelementnamespace-name": {"dfnID":"dom-sanitizerelementnamespace-name","dfnText":"name","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerelementnamespace-name"},{"id":"ref-for-dom-sanitizerelementnamespace-name\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespace-name\u2461"},{"id":"ref-for-dom-sanitizerelementnamespace-name\u2462"}],"title":"3.1. Sanitize"}],"url":"#dom-sanitizerelementnamespace-name"}, "dom-sanitizerelementnamespace-namespace": {"dfnID":"dom-sanitizerelementnamespace-namespace","dfnText":"_namespace","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerelementnamespace-namespace"},{"id":"ref-for-dom-sanitizerelementnamespace-namespace\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespace-namespace\u2461"},{"id":"ref-for-dom-sanitizerelementnamespace-namespace\u2462"}],"title":"3.1. Sanitize"}],"url":"#dom-sanitizerelementnamespace-namespace"}, "dom-sanitizerelementnamespacewithattributes-attributes": {"dfnID":"dom-sanitizerelementnamespacewithattributes-attributes","dfnText":"attributes","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u24ea"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2460\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u24ea"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2461\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u24ea"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2466"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2462\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u24ea"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2463"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-attributes\u2463\u2467"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerelementnamespacewithattributes-attributes"}, "dom-sanitizerelementnamespacewithattributes-removeattributes": {"dfnID":"dom-sanitizerelementnamespacewithattributes-removeattributes","dfnText":"removeAttributes","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u24ea"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2465"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2460\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u24ea"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2461"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2462"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2466"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2461\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u24ea"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2461"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2462"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2463"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2464"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2465"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2466"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2467"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2462\u2468"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2463\u24ea"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2463\u2460"},{"id":"ref-for-dom-sanitizerelementnamespacewithattributes-removeattributes\u2463\u2461"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#dom-sanitizerelementnamespacewithattributes-removeattributes"}, "dom-sanitizerpresets-default": {"dfnID":"dom-sanitizerpresets-default","dfnText":"\"default\"","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerpresets-default"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-dom-sanitizerpresets-default\u2460"},{"id":"ref-for-dom-sanitizerpresets-default\u2461"}],"title":"3. Algorithms"}],"url":"#dom-sanitizerpresets-default"}, "dom-sanitizerprocessinginstruction-target": {"dfnID":"dom-sanitizerprocessinginstruction-target","dfnText":"target","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sanitizerprocessinginstruction-target"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2460"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2461"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2462"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2463"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2464"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2465"},{"id":"ref-for-dom-sanitizerprocessinginstruction-target\u2466"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#dom-sanitizerprocessinginstruction-target"}, "dom-sethtmloptions-sanitizer": {"dfnID":"dom-sethtmloptions-sanitizer","dfnText":"sanitizer","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-sethtmloptions-sanitizer"},{"id":"ref-for-dom-sethtmloptions-sanitizer\u2460"}],"title":"3. Algorithms"}],"url":"#dom-sethtmloptions-sanitizer"}, "dom-sethtmlunsafeoptions-sanitizer": {"dfnID":"dom-sethtmlunsafeoptions-sanitizer","dfnText":"sanitizer","external":false,"refSections":[],"url":"#dom-sethtmlunsafeoptions-sanitizer"}, "dom-shadowroot-sethtml": {"dfnID":"dom-shadowroot-sethtml","dfnText":"setHTML(html, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-shadowroot-sethtml"}],"title":"2.1. Sanitizer API"}],"url":"#dom-shadowroot-sethtml"}, "dom-shadowroot-sethtml-html-options-html": {"dfnID":"dom-shadowroot-sethtml-html-options-html","dfnText":"html","external":false,"refSections":[],"url":"#dom-shadowroot-sethtml-html-options-html"}, "dom-shadowroot-sethtml-html-options-options": {"dfnID":"dom-shadowroot-sethtml-html-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-shadowroot-sethtml-html-options-options"}, "dom-shadowroot-sethtmlunsafe": {"dfnID":"dom-shadowroot-sethtmlunsafe","dfnText":"setHTMLUnsafe(html, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-shadowroot-sethtmlunsafe"}],"title":"2.1. Sanitizer API"}],"url":"#dom-shadowroot-sethtmlunsafe"}, "dom-shadowroot-sethtmlunsafe-html-options-html": {"dfnID":"dom-shadowroot-sethtmlunsafe-html-options-html","dfnText":"html","external":false,"refSections":[],"url":"#dom-shadowroot-sethtmlunsafe-html-options-html"}, "dom-shadowroot-sethtmlunsafe-html-options-options": {"dfnID":"dom-shadowroot-sethtmlunsafe-html-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-shadowroot-sethtmlunsafe-html-options-options"}, "e19f3699": {"dfnID":"e19f3699","dfnText":"XLink namespace","external":true,"refSections":[{"refs":[{"id":"ref-for-xlink-namespace"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-xlink-namespace\u2460"}],"title":"3.6. Builtins"}],"url":"https://infra.spec.whatwg.org/#xlink-namespace"}, "e240317a": {"dfnID":"e240317a","dfnText":"local name (for Attr)","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-attribute-local-name"},{"id":"ref-for-concept-attribute-local-name\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#concept-attribute-local-name"}, "e5ea84f2": {"dfnID":"e5ea84f2","dfnText":"intersection","external":true,"refSections":[{"refs":[{"id":"ref-for-set-intersection"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-set-intersection\u2460"},{"id":"ref-for-set-intersection\u2461"},{"id":"ref-for-set-intersection\u2462"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-set-intersection\u2463"},{"id":"ref-for-set-intersection\u2464"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#set-intersection"}, "e99bd18e": {"dfnID":"e99bd18e","dfnText":"relevant global object","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-relevant-global"},{"id":"ref-for-concept-relevant-global\u2460"}],"title":"2.1. Sanitizer API"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#concept-relevant-global"}, "ead425bd": {"dfnID":"ead425bd","dfnText":"MathML namespace","external":true,"refSections":[{"refs":[{"id":"ref-for-mathml-namespace"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-mathml-namespace\u2460"}],"title":"3.6. Builtins"}],"url":"https://infra.spec.whatwg.org/#mathml-namespace"}, "ece46d2b": {"dfnID":"ece46d2b","dfnText":"ParentNode","external":true,"refSections":[{"refs":[{"id":"ref-for-parentnode"},{"id":"ref-for-parentnode\u2460"}],"title":"3.1. Sanitize"}],"url":"https://dom.spec.whatwg.org/#parentnode"}, "ee469dff": {"dfnID":"ee469dff","dfnText":"with default","external":true,"refSections":[{"refs":[{"id":"ref-for-map-with-default"},{"id":"ref-for-map-with-default\u2460"},{"id":"ref-for-map-with-default\u2461"},{"id":"ref-for-map-with-default\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-map-with-default\u2463"},{"id":"ref-for-map-with-default\u2464"},{"id":"ref-for-map-with-default\u2465"},{"id":"ref-for-map-with-default\u2466"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-map-with-default\u2467"},{"id":"ref-for-map-with-default\u2468"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-map-with-default\u2460\u24ea"},{"id":"ref-for-map-with-default\u2460\u2460"},{"id":"ref-for-map-with-default\u2460\u2461"},{"id":"ref-for-map-with-default\u2460\u2462"}],"title":"3.2. Modify the Configuration"}],"url":"https://infra.spec.whatwg.org/#map-with-default"}, "enumdef-sanitizerpresets": {"dfnID":"enumdef-sanitizerpresets","dfnText":"SanitizerPresets","external":false,"refSections":[{"refs":[{"id":"ref-for-enumdef-sanitizerpresets"},{"id":"ref-for-enumdef-sanitizerpresets\u2460"},{"id":"ref-for-enumdef-sanitizerpresets\u2461"},{"id":"ref-for-enumdef-sanitizerpresets\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-enumdef-sanitizerpresets\u2463"}],"title":"3. Algorithms"}],"url":"#enumdef-sanitizerpresets"}, "f02cd417": {"dfnID":"f02cd417","dfnText":"iterate","external":true,"refSections":[{"refs":[{"id":"ref-for-list-iterate"},{"id":"ref-for-list-iterate\u2460"},{"id":"ref-for-list-iterate\u2461"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-list-iterate\u2462"},{"id":"ref-for-list-iterate\u2463"},{"id":"ref-for-list-iterate\u2464"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-list-iterate\u2465"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-list-iterate\u2466"},{"id":"ref-for-list-iterate\u2467"},{"id":"ref-for-list-iterate\u2468"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-list-iterate\u2460\u24ea"},{"id":"ref-for-list-iterate\u2460\u2460"},{"id":"ref-for-list-iterate\u2460\u2461"},{"id":"ref-for-list-iterate\u2460\u2462"},{"id":"ref-for-list-iterate\u2460\u2463"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-list-iterate\u2460\u2464"},{"id":"ref-for-list-iterate\u2460\u2465"},{"id":"ref-for-list-iterate\u2460\u2466"},{"id":"ref-for-list-iterate\u2460\u2467"},{"id":"ref-for-list-iterate\u2460\u2468"},{"id":"ref-for-list-iterate\u2461\u24ea"},{"id":"ref-for-list-iterate\u2461\u2460"},{"id":"ref-for-list-iterate\u2461\u2461"},{"id":"ref-for-list-iterate\u2461\u2462"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-list-iterate\u2461\u2463"},{"id":"ref-for-list-iterate\u2461\u2464"},{"id":"ref-for-list-iterate\u2461\u2465"},{"id":"ref-for-list-iterate\u2461\u2466"},{"id":"ref-for-list-iterate\u2461\u2467"},{"id":"ref-for-list-iterate\u2461\u2468"}],"title":"3.5. Supporting Algorithms"}],"url":"https://infra.spec.whatwg.org/#list-iterate"}, "f052b1ea": {"dfnID":"f052b1ea","dfnText":"HTML namespace","external":true,"refSections":[{"refs":[{"id":"ref-for-html-namespace"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-html-namespace\u2460"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-html-namespace\u2461"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-html-namespace\u2462"},{"id":"ref-for-html-namespace\u2463"},{"id":"ref-for-html-namespace\u2464"},{"id":"ref-for-html-namespace\u2465"},{"id":"ref-for-html-namespace\u2466"},{"id":"ref-for-html-namespace\u2467"},{"id":"ref-for-html-namespace\u2468"}],"title":"3.6. Builtins"}],"url":"https://infra.spec.whatwg.org/#html-namespace"}, "f099a38d": {"dfnID":"f099a38d","dfnText":"HTMLTemplateElement","external":true,"refSections":[{"refs":[{"id":"ref-for-htmltemplateelement"},{"id":"ref-for-htmltemplateelement\u2460"}],"title":"2.1. Sanitizer API"}],"url":"https://html.spec.whatwg.org/multipage/scripting.html#htmltemplateelement"}, "f7cccb8c": {"dfnID":"f7cccb8c","dfnText":"HTML fragment parsing algorithm","external":true,"refSections":[{"refs":[{"id":"ref-for-html-fragment-parsing-algorithm"}],"title":"3. Algorithms"}],"url":"https://html.spec.whatwg.org/#html-fragment-parsing-algorithm"}, "f937b7b6": {"dfnID":"f937b7b6","dfnText":"continue","external":true,"refSections":[{"refs":[{"id":"ref-for-iteration-continue"},{"id":"ref-for-iteration-continue\u2460"},{"id":"ref-for-iteration-continue\u2461"},{"id":"ref-for-iteration-continue\u2462"},{"id":"ref-for-iteration-continue\u2463"}],"title":"3.1. Sanitize"}],"url":"https://infra.spec.whatwg.org/#iteration-continue"}, "handlejavascriptnavigationurls": {"dfnID":"handlejavascriptnavigationurls","dfnText":"handleJavascriptNavigationUrls","external":false,"refSections":[{"refs":[{"id":"ref-for-handlejavascriptnavigationurls"}],"title":"3.1. Sanitize"}],"url":"#handlejavascriptnavigationurls"}, "is-attribute-allowed": {"dfnID":"is-attribute-allowed","dfnText":"is attribute allowed","external":false,"refSections":[{"refs":[{"id":"ref-for-is-attribute-allowed"}],"title":"3.1. Sanitize"}],"url":"#is-attribute-allowed"}, "map-equal": {"dfnID":"map-equal","dfnText":"equal","external":false,"refSections":[{"refs":[{"id":"ref-for-map-equal"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#map-equal"}, "safe-and-unsafe": {"dfnID":"safe-and-unsafe","dfnText":"Safe and unsafe","external":false,"refSections":[{"refs":[{"id":"ref-for-safe-and-unsafe"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#safe-and-unsafe"}, "sanitize": {"dfnID":"sanitize","dfnText":"sanitize","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitize"},{"id":"ref-for-sanitize\u2460"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-sanitize\u2461"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-sanitize\u2462"}],"title":"3.1. Sanitize"}],"url":"#sanitize"}, "sanitize-core": {"dfnID":"sanitize-core","dfnText":"sanitize core","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitize-core"},{"id":"ref-for-sanitize-core\u2460"},{"id":"ref-for-sanitize-core\u2461"},{"id":"ref-for-sanitize-core\u2462"},{"id":"ref-for-sanitize-core\u2463"}],"title":"3.1. Sanitize"}],"url":"#sanitize-core"}, "sanitizer": {"dfnID":"sanitizer","dfnText":"Sanitizer","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizer"},{"id":"ref-for-sanitizer\u2460"},{"id":"ref-for-sanitizer\u2461"},{"id":"ref-for-sanitizer\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizer\u2463"},{"id":"ref-for-sanitizer\u2464"},{"id":"ref-for-sanitizer\u2465"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-sanitizer\u2466"},{"id":"ref-for-sanitizer\u2467"},{"id":"ref-for-sanitizer\u2468"},{"id":"ref-for-sanitizer\u2460\u24ea"}],"title":"3. Algorithms"},{"refs":[{"id":"ref-for-sanitizer\u2460\u2460"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-sanitizer\u2460\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-sanitizer\u2460\u2462"}],"title":"3.3. Set the Configuration"},{"refs":[{"id":"ref-for-sanitizer\u2460\u2463"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#sanitizer"}, "sanitizer-canonicalize-the-configuration": {"dfnID":"sanitizer-canonicalize-the-configuration","dfnText":"canonicalize the configuration","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizer-canonicalize-the-configuration"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-sanitizer-canonicalize-the-configuration\u2460"}],"title":"3.3. Set the Configuration"}],"url":"#sanitizer-canonicalize-the-configuration"}, "sanitizer-configuration": {"dfnID":"sanitizer-configuration","dfnText":"configuration","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizer-configuration"},{"id":"ref-for-sanitizer-configuration\u2460"},{"id":"ref-for-sanitizer-configuration\u2461"},{"id":"ref-for-sanitizer-configuration\u2462"},{"id":"ref-for-sanitizer-configuration\u2463"},{"id":"ref-for-sanitizer-configuration\u2464"},{"id":"ref-for-sanitizer-configuration\u2465"},{"id":"ref-for-sanitizer-configuration\u2466"},{"id":"ref-for-sanitizer-configuration\u2467"},{"id":"ref-for-sanitizer-configuration\u2468"},{"id":"ref-for-sanitizer-configuration\u2460\u24ea"},{"id":"ref-for-sanitizer-configuration\u2460\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizer-configuration\u2460\u2461"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-sanitizer-configuration\u2460\u2462"}],"title":"3.3. Set the Configuration"},{"refs":[{"id":"ref-for-sanitizer-configuration\u2460\u2463"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#sanitizer-configuration"}, "sanitizer-remove-an-attribute": {"dfnID":"sanitizer-remove-an-attribute","dfnText":"remove an attribute","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizer-remove-an-attribute"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizer-remove-an-attribute\u2460"},{"id":"ref-for-sanitizer-remove-an-attribute\u2461"}],"title":"3.2. Modify the Configuration"}],"url":"#sanitizer-remove-an-attribute"}, "sanitizer-remove-an-element": {"dfnID":"sanitizer-remove-an-element","dfnText":"remove an element","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizer-remove-an-element"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizer-remove-an-element\u2460"}],"title":"3.2. Modify the Configuration"}],"url":"#sanitizer-remove-an-element"}, "sanitizer-set-a-configuration": {"dfnID":"sanitizer-set-a-configuration","dfnText":"set a configuration","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizer-set-a-configuration"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizer-set-a-configuration\u2460"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-sanitizer-set-a-configuration\u2461"}],"title":"3. Algorithms"}],"url":"#sanitizer-set-a-configuration"}, "sanitizerconfig-add": {"dfnID":"sanitizerconfig-add","dfnText":"add","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-add"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizerconfig-add\u2460"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-sanitizerconfig-add\u2461"}],"title":"3.5. Supporting Algorithms"}],"url":"#sanitizerconfig-add"}, "sanitizerconfig-contains": {"dfnID":"sanitizerconfig-contains","dfnText":"contains","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-contains"},{"id":"ref-for-sanitizerconfig-contains\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizerconfig-contains\u2461"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-sanitizerconfig-contains\u2462"},{"id":"ref-for-sanitizerconfig-contains\u2463"},{"id":"ref-for-sanitizerconfig-contains\u2464"},{"id":"ref-for-sanitizerconfig-contains\u2465"},{"id":"ref-for-sanitizerconfig-contains\u2466"},{"id":"ref-for-sanitizerconfig-contains\u2467"},{"id":"ref-for-sanitizerconfig-contains\u2468"},{"id":"ref-for-sanitizerconfig-contains\u2460\u24ea"},{"id":"ref-for-sanitizerconfig-contains\u2460\u2460"},{"id":"ref-for-sanitizerconfig-contains\u2460\u2461"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-sanitizerconfig-contains\u2460\u2462"}],"title":"3.5. Supporting Algorithms"}],"url":"#sanitizerconfig-contains"}, "sanitizerconfig-contains-a-target": {"dfnID":"sanitizerconfig-contains-a-target","dfnText":"contains a target","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-contains-a-target"},{"id":"ref-for-sanitizerconfig-contains-a-target\u2460"},{"id":"ref-for-sanitizerconfig-contains-a-target\u2461"},{"id":"ref-for-sanitizerconfig-contains-a-target\u2462"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizerconfig-contains-a-target\u2463"},{"id":"ref-for-sanitizerconfig-contains-a-target\u2464"}],"title":"3.1. Sanitize"}],"url":"#sanitizerconfig-contains-a-target"}, "sanitizerconfig-get-a-sanitizer-instance-from-options": {"dfnID":"sanitizerconfig-get-a-sanitizer-instance-from-options","dfnText":"get a sanitizer instance from options","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-get-a-sanitizer-instance-from-options"},{"id":"ref-for-sanitizerconfig-get-a-sanitizer-instance-from-options\u2460"}],"title":"2.1. Sanitizer API"},{"refs":[{"id":"ref-for-sanitizerconfig-get-a-sanitizer-instance-from-options\u2461"}],"title":"3. Algorithms"}],"url":"#sanitizerconfig-get-a-sanitizer-instance-from-options"}, "sanitizerconfig-has-duplicate-targets": {"dfnID":"sanitizerconfig-has-duplicate-targets","dfnText":"has duplicate targets","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-has-duplicate-targets"},{"id":"ref-for-sanitizerconfig-has-duplicate-targets\u2460"}],"title":"2.4. Configuration Invariants"}],"url":"#sanitizerconfig-has-duplicate-targets"}, "sanitizerconfig-has-duplicates": {"dfnID":"sanitizerconfig-has-duplicates","dfnText":"has duplicates","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-has-duplicates"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2460"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2461"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2462"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2463"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2464"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2465"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2466"},{"id":"ref-for-sanitizerconfig-has-duplicates\u2467"}],"title":"2.4. Configuration Invariants"}],"url":"#sanitizerconfig-has-duplicates"}, "sanitizerconfig-intersection": {"dfnID":"sanitizerconfig-intersection","dfnText":"intersection","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-intersection"},{"id":"ref-for-sanitizerconfig-intersection\u2460"}],"title":"2.4. Configuration Invariants"}],"url":"#sanitizerconfig-intersection"}, "sanitizerconfig-less-than-item": {"dfnID":"sanitizerconfig-less-than-item","dfnText":"less than item","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-less-than-item"},{"id":"ref-for-sanitizerconfig-less-than-item\u2460"},{"id":"ref-for-sanitizerconfig-less-than-item\u2461"},{"id":"ref-for-sanitizerconfig-less-than-item\u2462"},{"id":"ref-for-sanitizerconfig-less-than-item\u2463"},{"id":"ref-for-sanitizerconfig-less-than-item\u2464"},{"id":"ref-for-sanitizerconfig-less-than-item\u2465"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#sanitizerconfig-less-than-item"}, "sanitizerconfig-remove": {"dfnID":"sanitizerconfig-remove","dfnText":"remove","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-remove"},{"id":"ref-for-sanitizerconfig-remove\u2460"},{"id":"ref-for-sanitizerconfig-remove\u2461"},{"id":"ref-for-sanitizerconfig-remove\u2462"},{"id":"ref-for-sanitizerconfig-remove\u2463"},{"id":"ref-for-sanitizerconfig-remove\u2464"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizerconfig-remove\u2465"},{"id":"ref-for-sanitizerconfig-remove\u2466"},{"id":"ref-for-sanitizerconfig-remove\u2467"}],"title":"3.2. Modify the Configuration"}],"url":"#sanitizerconfig-remove"}, "sanitizerconfig-remove-duplicates": {"dfnID":"sanitizerconfig-remove-duplicates","dfnText":"remove duplicates","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-remove-duplicates"},{"id":"ref-for-sanitizerconfig-remove-duplicates\u2460"},{"id":"ref-for-sanitizerconfig-remove-duplicates\u2461"},{"id":"ref-for-sanitizerconfig-remove-duplicates\u2462"}],"title":"2.2. SetHTML options and the configuration object."}],"url":"#sanitizerconfig-remove-duplicates"}, "sanitizerconfig-remove-unsafe": {"dfnID":"sanitizerconfig-remove-unsafe","dfnText":"remove unsafe","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-remove-unsafe"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizerconfig-remove-unsafe\u2460"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-sanitizerconfig-remove-unsafe\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-sanitizerconfig-remove-unsafe\u2462"}],"title":"3.6. Builtins"}],"url":"#sanitizerconfig-remove-unsafe"}, "sanitizerconfig-valid": {"dfnID":"sanitizerconfig-valid","dfnText":"valid","external":false,"refSections":[{"refs":[{"id":"ref-for-sanitizerconfig-valid"},{"id":"ref-for-sanitizerconfig-valid\u2460"},{"id":"ref-for-sanitizerconfig-valid\u2461"},{"id":"ref-for-sanitizerconfig-valid\u2462"},{"id":"ref-for-sanitizerconfig-valid\u2463"},{"id":"ref-for-sanitizerconfig-valid\u2464"},{"id":"ref-for-sanitizerconfig-valid\u2465"},{"id":"ref-for-sanitizerconfig-valid\u2466"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-sanitizerconfig-valid\u2467"}],"title":"2.4. Configuration Invariants"},{"refs":[{"id":"ref-for-sanitizerconfig-valid\u2468"}],"title":"3.1. Sanitize"},{"refs":[{"id":"ref-for-sanitizerconfig-valid\u2460\u24ea"},{"id":"ref-for-sanitizerconfig-valid\u2460\u2460"},{"id":"ref-for-sanitizerconfig-valid\u2460\u2461"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-sanitizerconfig-valid\u2460\u2462"}],"title":"3.3. Set the Configuration"}],"url":"#sanitizerconfig-valid"}, "set-and-filter-html": {"dfnID":"set-and-filter-html","dfnText":"set and filter HTML","external":false,"refSections":[{"refs":[{"id":"ref-for-set-and-filter-html"},{"id":"ref-for-set-and-filter-html\u2460"},{"id":"ref-for-set-and-filter-html\u2461"},{"id":"ref-for-set-and-filter-html\u2462"}],"title":"2.1. Sanitizer API"}],"url":"#set-and-filter-html"}, "set-equal": {"dfnID":"set-equal","dfnText":"equal","external":false,"refSections":[{"refs":[{"id":"ref-for-set-equal"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-set-equal\u2460"}],"title":"3.5. Supporting Algorithms"}],"url":"#set-equal"}, "typedefdef-sanitizerattribute": {"dfnID":"typedefdef-sanitizerattribute","dfnText":"SanitizerAttribute","external":false,"refSections":[{"refs":[{"id":"ref-for-typedefdef-sanitizerattribute"},{"id":"ref-for-typedefdef-sanitizerattribute\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-typedefdef-sanitizerattribute\u2461"},{"id":"ref-for-typedefdef-sanitizerattribute\u2462"},{"id":"ref-for-typedefdef-sanitizerattribute\u2463"},{"id":"ref-for-typedefdef-sanitizerattribute\u2464"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-typedefdef-sanitizerattribute\u2465"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#typedefdef-sanitizerattribute"}, "typedefdef-sanitizerelement": {"dfnID":"typedefdef-sanitizerelement","dfnText":"SanitizerElement","external":false,"refSections":[{"refs":[{"id":"ref-for-typedefdef-sanitizerelement"},{"id":"ref-for-typedefdef-sanitizerelement\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-typedefdef-sanitizerelement\u2461"},{"id":"ref-for-typedefdef-sanitizerelement\u2462"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-typedefdef-sanitizerelement\u2463"}],"title":"3.2. Modify the Configuration"},{"refs":[{"id":"ref-for-typedefdef-sanitizerelement\u2464"}],"title":"3.4. Canonicalize the Configuration"},{"refs":[{"id":"ref-for-typedefdef-sanitizerelement\u2465"}],"title":"3.5. Supporting Algorithms"}],"url":"#typedefdef-sanitizerelement"}, "typedefdef-sanitizerelementwithattributes": {"dfnID":"typedefdef-sanitizerelementwithattributes","dfnText":"SanitizerElementWithAttributes","external":false,"refSections":[{"refs":[{"id":"ref-for-typedefdef-sanitizerelementwithattributes"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-typedefdef-sanitizerelementwithattributes\u2460"}],"title":"2.3. The Configuration Dictionary"},{"refs":[{"id":"ref-for-typedefdef-sanitizerelementwithattributes\u2461"}],"title":"3.4. Canonicalize the Configuration"}],"url":"#typedefdef-sanitizerelementwithattributes"}, "typedefdef-sanitizerpi": {"dfnID":"typedefdef-sanitizerpi","dfnText":"SanitizerPI","external":false,"refSections":[{"refs":[{"id":"ref-for-typedefdef-sanitizerpi"},{"id":"ref-for-typedefdef-sanitizerpi\u2460"}],"title":"2.2. SetHTML options and the configuration object."},{"refs":[{"id":"ref-for-typedefdef-sanitizerpi\u2461"},{"id":"ref-for-typedefdef-sanitizerpi\u2462"}],"title":"2.3. The Configuration Dictionary"}],"url":"#typedefdef-sanitizerpi"}, }; document.addEventListener("DOMContentLoaded", ()=> { genAllDfnPanels(); document.body.addEventListener("click", (e) => { // If not handled already, just hide all dfn panels. hideAllDfnPanels(); }); }); window.addEventListener("resize", () => { // Pin any visible dfn panel queryAll(".dfn-panel.on, .dfn-panel.activated").forEach(el=> positionDfnPanel(el)); }); function genAllDfnPanels() { for(const panelData of Object.values(dfnPanelData)) { const dfnID = panelData.dfnID; const dfn = document.getElementById(dfnID); if(!dfn) { console.log(`Can't find dfn#${dfnID}.`, panelData); continue; } dfn.panelData = panelData; insertDfnPopupAction(dfn); } } function genDfnPanel(dfn, { dfnID, url, dfnText, refSections, external }) { const dfnPanel = mk.aside({ class: "dfn-panel on", id: `infopanel-for-${dfnID}`, "data-for": dfnID, "aria-labelled-by":`infopaneltitle-for-${dfnID}`, }, mk.span({id:`infopaneltitle-for-${dfnID}`, style:"display:none"}, `Info about the '${dfnText}' ${external?"external":""} reference.`), mk.a({href:url, class:"dfn-link"}, url), refSections.length == 0 ? [] : mk.b({}, "Referenced in:"), mk.ul({}, ...refSections.map(section=> mk.li({}, ...section.refs.map((ref, refI)=> [ mk.a({ href: `#${ref.id}` }, (refI == 0) ? section.title : `(${refI + 1})` ), " ", ] ), ), ), ), genLinkingSyntaxes(dfn), ); dfnPanel.addEventListener('click', (event) => { if (event.target.nodeName == 'A') { scrollToTargetAndHighlight(event); pinDfnPanel(dfnPanel); } event.stopPropagation(); refocusOnTarget(event); }); dfnPanel.addEventListener('keydown', (event) => { if(event.keyCode == 27) { // Escape key hideDfnPanel({dfnPanel}); event.stopPropagation(); event.preventDefault(); } }); dfnPanel.dfn = dfn; dfn.dfnPanel = dfnPanel; return dfnPanel; } function hideAllDfnPanels() { // Delete the currently-active dfn panel. queryAll(".dfn-panel").forEach(dfnPanel=> hideDfnPanel({dfnPanel})); } function showDfnPanel(dfn) { hideAllDfnPanels(); // Only display one at a time. dfn.setAttribute("aria-expanded", "true"); const dfnPanel = genDfnPanel(dfn, dfn.panelData); // Give the dfn a unique tabindex, and then // give all the tabbable panel bits successive indexes. let tabIndex = 100; dfn.tabIndex = tabIndex++; const tabbable = dfnPanel.querySelectorAll(":is(a, button)"); for (const el of tabbable) { el.tabIndex = tabIndex++; } append(document.body, dfnPanel); positionDfnPanel(dfnPanel); } function positionDfnPanel(dfnPanel) { const dfn = dfnPanel.dfn; const dfnPos = getBounds(dfn); dfnPanel.style.top = dfnPos.bottom + "px"; dfnPanel.style.left = dfnPos.left + "px"; const panelPos = dfnPanel.getBoundingClientRect(); const panelMargin = 8; const maxRight = document.body.parentNode.clientWidth - panelMargin; if (panelPos.right > maxRight) { const overflowAmount = panelPos.right - maxRight; const newLeft = Math.max(panelMargin, dfnPos.left - overflowAmount); dfnPanel.style.left = newLeft + "px"; } } function pinDfnPanel(dfnPanel) { // Switch it to "activated" state, which pins it. dfnPanel.classList.add("activated"); dfnPanel.style.position = "fixed"; dfnPanel.style.left = null; dfnPanel.style.top = null; } function hideDfnPanel({dfn, dfnPanel}) { if(!dfnPanel) dfnPanel = dfn.dfnPanel; if(!dfn) dfn = dfnPanel.dfn; dfn.dfnPanel = undefined; dfnPanel.dfn = undefined; dfn.setAttribute("aria-expanded", "false"); dfn.tabIndex = undefined; dfnPanel.remove() } function toggleDfnPanel(dfn) { if(dfn.dfnPanel) { hideDfnPanel(dfn); } else { showDfnPanel(dfn); } } function insertDfnPopupAction(dfn) { dfn.setAttribute('role', 'button'); dfn.setAttribute('aria-expanded', 'false') dfn.tabIndex = 0; dfn.classList.add('has-dfn-panel'); dfn.addEventListener('click', (event) => { toggleDfnPanel(dfn); event.stopPropagation(); }); dfn.addEventListener('keypress', (event) => { const kc = event.keyCode; // 32-> Space, 13-> Enter if(kc == 32 || kc == 13) { toggleDfnPanel(dfn); event.stopPropagation(); event.preventDefault(); } }); } function refocusOnTarget(event) { const target = event.target; setTimeout(() => { // Refocus on the event.target element. // This is needed after browser scrolls to the destination. target.focus(); }); } // TODO: shared util // Returns the root-level absolute position {left and top} of element. function getBounds(el, relativeTo=document.body) { const relativeRect = relativeTo.getBoundingClientRect(); const elRect = el.getBoundingClientRect(); const top = elRect.top - relativeRect.top; const left = elRect.left - relativeRect.left; return { top, left, bottom: top + elRect.height, right: left + elRect.width, } } function scrollToTargetAndHighlight(event) { let hash = event.target.hash; if (hash) { hash = decodeURIComponent(hash.substring(1)); const dest = document.getElementById(hash); if (dest) { dest.classList.add('highlighted'); setTimeout(() => dest.classList.remove('highlighted'), 1000); } } } // Functions, divided by link type, that wrap an autolink's // contents with the appropriate outer syntax. // Alternately, a string naming another type they format // the same as. function needsFor(type) { switch(type) { case "descriptor": case "value": case "element-attr": case "attr-value": case "element-state": case "method": case "constructor": case "argument": case "attribute": case "const": case "dict-member": case "event": case "enum-value": case "stringifier": case "serializer": case "iterator": case "maplike": case "setlike": case "state": case "mode": case "context": case "facet": return true; default: return false; } } function refusesFor(type) { switch(type) { case "property": case "element": case "interface": case "namespace": case "callback": case "dictionary": case "enum": case "exception": case "typedef": case "http-header": case "permission": return true; default: return false; } } function linkFormatterFromType(type) { switch(type) { case 'scheme': case 'permission': case 'dfn': return (text) => `[=${text}=]`; case 'abstract-op': return (text) => `[\$${text}\$]`; case 'function': case 'at-rule': case 'selector': case 'value': return (text) => `''${text}''`; case 'http-header': return (text) => `[:${text}:]`; case 'interface': case 'constructor': case 'method': case 'argument': case 'attribute': case 'callback': case 'dictionary': case 'dict-member': case 'enum': case 'enum-value': case 'exception': case 'const': case 'typedef': case 'stringifier': case 'serializer': case 'iterator': case 'maplike': case 'setlike': case 'extended-attribute': case 'event': case 'idl': return (text) => `{{${text}}}`; case 'element-state': case 'element-attr': case 'attr-value': case 'element': return (element) => ` `; case 'grammar': return (text) => `${text} (within a )`; case 'type': return (text)=> ``; case 'descriptor': case 'property': return (text) => `'${text}'`; default: return; }; }; function genLinkingSyntaxes(dfn) { if(dfn.tagName != "DFN") return; const type = dfn.getAttribute('data-dfn-type'); if(!type) { console.log(` doesn't have a data-dfn-type:`, dfn); return []; } // Return a function that wraps link text based on the type const linkFormatter = linkFormatterFromType(type); if(!linkFormatter) { console.log(` has an unknown data-dfn-type:`, dfn); return []; } let ltAlts; if(dfn.hasAttribute('data-lt')) { ltAlts = dfn.getAttribute('data-lt') .split("|") .map(x=>x.trim()); } else { ltAlts = [dfn.textContent.trim()]; } if(type == "type") { // lt of "", but "foo" is the interior; // is how you write it with a for, // not or whatever. for(var i = 0; i < ltAlts.length; i++) { const lt = ltAlts[i]; const match = //.exec(lt); if(match) { ltAlts[i] = match[1]; } } } let forAlts; if(dfn.hasAttribute('data-dfn-for')) { forAlts = dfn.getAttribute('data-dfn-for') .split(",") .map(x=>x.trim()); } else { forAlts = ['']; } let linkingSyntaxes = []; if(!needsFor(type)) { for(const lt of ltAlts) { linkingSyntaxes.push(linkFormatter(lt)); } } if(!refusesFor(type)) { for(const f of forAlts) { linkingSyntaxes.push(linkFormatter(`${f}/${ltAlts[0]}`)) } } return [ mk.b({}, 'Possible linking syntaxes:'), mk.ul({}, ...linkingSyntaxes.map(link => { const copyLink = async () => await navigator.clipboard.writeText(link); return mk.li({}, mk.div({ class: 'link-item' }, mk.button({ class: 'copy-icon', title: 'Copy', type: 'button', _onclick: copyLink, tabindex: 0, }, mk.span({ class: 'icon' }) ), mk.span({}, link) ) ); }) ) ]; } } /* Boilerplate: script-ref-hints */ "use strict"; { let refsData = { "#boolean-not": {"displayText":"not","export":true,"for_":["boolean"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"not","type":"dfn","url":"#boolean-not"}, "#built-in-animating-url-attributes-list": {"displayText":"built-in animating url attributes list","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"built-in animating url attributes list","type":"dfn","url":"#built-in-animating-url-attributes-list"}, "#built-in-navigating-url-attributes-list": {"displayText":"built-in navigating url attributes list","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"built-in navigating url attributes list","type":"dfn","url":"#built-in-navigating-url-attributes-list"}, "#built-in-non-replaceable-elements-list": {"displayText":"built-in non-replaceable elements list","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"built-in non-replaceable elements list","type":"dfn","url":"#built-in-non-replaceable-elements-list"}, "#built-in-safe-baseline-configuration": {"displayText":"built-in safe baseline configuration","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"built-in safe baseline configuration","type":"dfn","url":"#built-in-safe-baseline-configuration"}, "#built-in-safe-default-configuration": {"displayText":"built-in safe default configuration","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"built-in safe default configuration","type":"dfn","url":"#built-in-safe-default-configuration"}, "#canonicalize-a-sanitizer-attribute": {"displayText":"canonicalize a sanitizer attribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"canonicalize a sanitizer attribute","type":"dfn","url":"#canonicalize-a-sanitizer-attribute"}, "#canonicalize-a-sanitizer-element": {"displayText":"canonicalize a sanitizer element","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"canonicalize a sanitizer element","type":"dfn","url":"#canonicalize-a-sanitizer-element"}, "#canonicalize-a-sanitizer-element-with-attributes": {"displayText":"canonicalize a sanitizer element with attributes","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"canonicalize a sanitizer element with attributes","type":"dfn","url":"#canonicalize-a-sanitizer-element-with-attributes"}, "#canonicalize-a-sanitizer-name": {"displayText":"canonicalize a sanitizer name","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"canonicalize a sanitizer name","type":"dfn","url":"#canonicalize-a-sanitizer-name"}, "#canonicalize-a-sanitizer-processing-instruction": {"displayText":"canonicalize a sanitizer processing instruction","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"canonicalize a sanitizer processing instruction","type":"dfn","url":"#canonicalize-a-sanitizer-processing-instruction"}, "#comment": {"displayText":"comment","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"comment","type":"dfn","url":"#comment"}, "#contains-a-javascript-url": {"displayText":"contains a javascript: url","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"contains a javascript: url","type":"dfn","url":"#contains-a-javascript-url"}, "#dictdef-sanitizerattributenamespace": {"displayText":"SanitizerAttributeNamespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerAttributeNamespace","type":"dictionary","url":"#dictdef-sanitizerattributenamespace"}, "#dictdef-sanitizerconfig": {"displayText":"SanitizerConfig","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerConfig","type":"dictionary","url":"#dictdef-sanitizerconfig"}, "#dictdef-sanitizerelementnamespace": {"displayText":"SanitizerElementNamespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerElementNamespace","type":"dictionary","url":"#dictdef-sanitizerelementnamespace"}, "#dictdef-sanitizerelementnamespacewithattributes": {"displayText":"SanitizerElementNamespaceWithAttributes","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerElementNamespaceWithAttributes","type":"dictionary","url":"#dictdef-sanitizerelementnamespacewithattributes"}, "#dictdef-sanitizerprocessinginstruction": {"displayText":"SanitizerProcessingInstruction","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerProcessingInstruction","type":"dictionary","url":"#dictdef-sanitizerprocessinginstruction"}, "#dictdef-sethtmloptions": {"displayText":"SetHTMLOptions","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SetHTMLOptions","type":"dictionary","url":"#dictdef-sethtmloptions"}, "#dictdef-sethtmlunsafeoptions": {"displayText":"SetHTMLUnsafeOptions","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SetHTMLUnsafeOptions","type":"dictionary","url":"#dictdef-sethtmlunsafeoptions"}, "#dom-document-parsehtml": {"displayText":"parseHTML(html, options)","export":true,"for_":["Document"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"parseHTML(html, options)","type":"method","url":"#dom-document-parsehtml"}, "#dom-document-parsehtmlunsafe": {"displayText":"parseHTMLUnsafe(html, options)","export":true,"for_":["Document"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"parseHTMLUnsafe(html, options)","type":"method","url":"#dom-document-parsehtmlunsafe"}, "#dom-element-sethtml": {"displayText":"setHTML(html)","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"setHTML(html)","type":"method","url":"#dom-element-sethtml"}, "#dom-element-sethtmlunsafe": {"displayText":"setHTMLUnsafe(html)","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"setHTMLUnsafe(html)","type":"method","url":"#dom-element-sethtmlunsafe"}, "#dom-sanitizer-allowattribute": {"displayText":"allowAttribute(attribute)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"allowAttribute(attribute)","type":"method","url":"#dom-sanitizer-allowattribute"}, "#dom-sanitizer-allowelement": {"displayText":"allowElement(element)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"allowElement(element)","type":"method","url":"#dom-sanitizer-allowelement"}, "#dom-sanitizer-allowprocessinginstruction": {"displayText":"allowProcessingInstruction(pi)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"allowProcessingInstruction(pi)","type":"method","url":"#dom-sanitizer-allowprocessinginstruction"}, "#dom-sanitizer-constructor": {"displayText":"constructor(configuration)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"constructor(configuration)","type":"constructor","url":"#dom-sanitizer-constructor"}, "#dom-sanitizer-get": {"displayText":"get()","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"get()","type":"method","url":"#dom-sanitizer-get"}, "#dom-sanitizer-removeattribute": {"displayText":"removeAttribute(attribute)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeAttribute(attribute)","type":"method","url":"#dom-sanitizer-removeattribute"}, "#dom-sanitizer-removeelement": {"displayText":"removeElement(element)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeElement(element)","type":"method","url":"#dom-sanitizer-removeelement"}, "#dom-sanitizer-removeprocessinginstruction": {"displayText":"removeProcessingInstruction(pi)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeProcessingInstruction(pi)","type":"method","url":"#dom-sanitizer-removeprocessinginstruction"}, "#dom-sanitizer-removeunsafe": {"displayText":"removeUnsafe()","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeUnsafe()","type":"method","url":"#dom-sanitizer-removeunsafe"}, "#dom-sanitizer-replaceelementwithchildren": {"displayText":"replaceElementWithChildren(element)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"replaceElementWithChildren(element)","type":"method","url":"#dom-sanitizer-replaceelementwithchildren"}, "#dom-sanitizer-setcomments": {"displayText":"setComments(allow)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"setComments(allow)","type":"method","url":"#dom-sanitizer-setcomments"}, "#dom-sanitizer-setdataattributes": {"displayText":"setDataAttributes(allow)","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"setDataAttributes(allow)","type":"method","url":"#dom-sanitizer-setdataattributes"}, "#dom-sanitizerattributenamespace-name": {"displayText":"name","export":true,"for_":["SanitizerAttributeNamespace"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"name","type":"dict-member","url":"#dom-sanitizerattributenamespace-name"}, "#dom-sanitizerattributenamespace-namespace": {"displayText":"namespace","export":true,"for_":["SanitizerAttributeNamespace"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"namespace","type":"dict-member","url":"#dom-sanitizerattributenamespace-namespace"}, "#dom-sanitizerconfig-attributes": {"displayText":"attributes","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"attributes","type":"dict-member","url":"#dom-sanitizerconfig-attributes"}, "#dom-sanitizerconfig-comments": {"displayText":"comments","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"comments","type":"dict-member","url":"#dom-sanitizerconfig-comments"}, "#dom-sanitizerconfig-dataattributes": {"displayText":"dataAttributes","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"dataAttributes","type":"dict-member","url":"#dom-sanitizerconfig-dataattributes"}, "#dom-sanitizerconfig-elements": {"displayText":"elements","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"elements","type":"dict-member","url":"#dom-sanitizerconfig-elements"}, "#dom-sanitizerconfig-processinginstructions": {"displayText":"processingInstructions","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"processingInstructions","type":"dict-member","url":"#dom-sanitizerconfig-processinginstructions"}, "#dom-sanitizerconfig-removeattributes": {"displayText":"removeAttributes","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeAttributes","type":"dict-member","url":"#dom-sanitizerconfig-removeattributes"}, "#dom-sanitizerconfig-removeelements": {"displayText":"removeElements","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeElements","type":"dict-member","url":"#dom-sanitizerconfig-removeelements"}, "#dom-sanitizerconfig-removeprocessinginstructions": {"displayText":"removeProcessingInstructions","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeProcessingInstructions","type":"dict-member","url":"#dom-sanitizerconfig-removeprocessinginstructions"}, "#dom-sanitizerconfig-replacewithchildrenelements": {"displayText":"replaceWithChildrenElements","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"replaceWithChildrenElements","type":"dict-member","url":"#dom-sanitizerconfig-replacewithchildrenelements"}, "#dom-sanitizerelementnamespace-name": {"displayText":"name","export":true,"for_":["SanitizerElementNamespace"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"name","type":"dict-member","url":"#dom-sanitizerelementnamespace-name"}, "#dom-sanitizerelementnamespace-namespace": {"displayText":"namespace","export":true,"for_":["SanitizerElementNamespace"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"namespace","type":"dict-member","url":"#dom-sanitizerelementnamespace-namespace"}, "#dom-sanitizerelementnamespacewithattributes-attributes": {"displayText":"attributes","export":true,"for_":["SanitizerElementNamespaceWithAttributes"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"attributes","type":"dict-member","url":"#dom-sanitizerelementnamespacewithattributes-attributes"}, "#dom-sanitizerelementnamespacewithattributes-removeattributes": {"displayText":"removeAttributes","export":true,"for_":["SanitizerElementNamespaceWithAttributes"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"removeAttributes","type":"dict-member","url":"#dom-sanitizerelementnamespacewithattributes-removeattributes"}, "#dom-sanitizerpresets-default": {"displayText":"\"default\"","export":true,"for_":["SanitizerPresets"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"\"default\"","type":"enum-value","url":"#dom-sanitizerpresets-default"}, "#dom-sanitizerprocessinginstruction-target": {"displayText":"target","export":true,"for_":["SanitizerProcessingInstruction"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"target","type":"dict-member","url":"#dom-sanitizerprocessinginstruction-target"}, "#dom-sethtmloptions-sanitizer": {"displayText":"sanitizer","export":true,"for_":["SetHTMLOptions"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"sanitizer","type":"dict-member","url":"#dom-sethtmloptions-sanitizer"}, "#dom-shadowroot-sethtml": {"displayText":"setHTML(html, options)","export":true,"for_":["ShadowRoot"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"setHTML(html, options)","type":"method","url":"#dom-shadowroot-sethtml"}, "#dom-shadowroot-sethtmlunsafe": {"displayText":"setHTMLUnsafe(html, options)","export":true,"for_":["ShadowRoot"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"setHTMLUnsafe(html, options)","type":"method","url":"#dom-shadowroot-sethtmlunsafe"}, "#enumdef-sanitizerpresets": {"displayText":"SanitizerPresets","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerPresets","type":"enum","url":"#enumdef-sanitizerpresets"}, "#handlejavascriptnavigationurls": {"displayText":"handlejavascriptnavigationurls","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"handlejavascriptnavigationurls","type":"dfn","url":"#handlejavascriptnavigationurls"}, "#is-attribute-allowed": {"displayText":"is attribute allowed","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"is attribute allowed","type":"dfn","url":"#is-attribute-allowed"}, "#map-equal": {"displayText":"equal","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"equal","type":"dfn","url":"#map-equal"}, "#safe-and-unsafe": {"displayText":"safe and unsafe","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"safe and unsafe","type":"dfn","url":"#safe-and-unsafe"}, "#sanitize": {"displayText":"sanitize","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"sanitize","type":"dfn","url":"#sanitize"}, "#sanitize-core": {"displayText":"sanitize core","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"sanitize core","type":"dfn","url":"#sanitize-core"}, "#sanitizer": {"displayText":"Sanitizer","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"Sanitizer","type":"interface","url":"#sanitizer"}, "#sanitizer-canonicalize-the-configuration": {"displayText":"canonicalize the configuration","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"canonicalize the configuration","type":"dfn","url":"#sanitizer-canonicalize-the-configuration"}, "#sanitizer-configuration": {"displayText":"configuration","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"configuration","type":"dfn","url":"#sanitizer-configuration"}, "#sanitizer-remove-an-attribute": {"displayText":"remove an attribute","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"remove an attribute","type":"dfn","url":"#sanitizer-remove-an-attribute"}, "#sanitizer-remove-an-element": {"displayText":"remove an element","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"remove an element","type":"dfn","url":"#sanitizer-remove-an-element"}, "#sanitizer-set-a-configuration": {"displayText":"set a configuration","export":true,"for_":["Sanitizer"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"set a configuration","type":"dfn","url":"#sanitizer-set-a-configuration"}, "#sanitizerconfig-add": {"displayText":"add","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"add","type":"dfn","url":"#sanitizerconfig-add"}, "#sanitizerconfig-contains": {"displayText":"contains","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"contains","type":"dfn","url":"#sanitizerconfig-contains"}, "#sanitizerconfig-contains-a-target": {"displayText":"contains a target","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"contains a target","type":"dfn","url":"#sanitizerconfig-contains-a-target"}, "#sanitizerconfig-get-a-sanitizer-instance-from-options": {"displayText":"get a sanitizer instance from options","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"get a sanitizer instance from options","type":"dfn","url":"#sanitizerconfig-get-a-sanitizer-instance-from-options"}, "#sanitizerconfig-has-duplicate-targets": {"displayText":"has duplicate targets","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"has duplicate targets","type":"dfn","url":"#sanitizerconfig-has-duplicate-targets"}, "#sanitizerconfig-has-duplicates": {"displayText":"has duplicates","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"has duplicates","type":"dfn","url":"#sanitizerconfig-has-duplicates"}, "#sanitizerconfig-intersection": {"displayText":"intersection","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"intersection","type":"dfn","url":"#sanitizerconfig-intersection"}, "#sanitizerconfig-less-than-item": {"displayText":"less than item","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"less than item","type":"dfn","url":"#sanitizerconfig-less-than-item"}, "#sanitizerconfig-remove": {"displayText":"remove","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"remove","type":"dfn","url":"#sanitizerconfig-remove"}, "#sanitizerconfig-remove-duplicates": {"displayText":"remove duplicates","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"remove duplicates","type":"dfn","url":"#sanitizerconfig-remove-duplicates"}, "#sanitizerconfig-remove-unsafe": {"displayText":"remove unsafe","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"remove unsafe","type":"dfn","url":"#sanitizerconfig-remove-unsafe"}, "#sanitizerconfig-valid": {"displayText":"valid","export":true,"for_":["SanitizerConfig"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"valid","type":"dfn","url":"#sanitizerconfig-valid"}, "#set-and-filter-html": {"displayText":"set and filter html","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"set and filter html","type":"dfn","url":"#set-and-filter-html"}, "#set-equal": {"displayText":"equal","export":true,"for_":["set"],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"equal","type":"dfn","url":"#set-equal"}, "#typedefdef-sanitizerattribute": {"displayText":"SanitizerAttribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerAttribute","type":"typedef","url":"#typedefdef-sanitizerattribute"}, "#typedefdef-sanitizerelement": {"displayText":"SanitizerElement","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerElement","type":"typedef","url":"#typedefdef-sanitizerelement"}, "#typedefdef-sanitizerelementwithattributes": {"displayText":"SanitizerElementWithAttributes","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerElementWithAttributes","type":"typedef","url":"#typedefdef-sanitizerelementwithattributes"}, "#typedefdef-sanitizerpi": {"displayText":"SanitizerPI","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"sanitizer-api-1","status":"local","text":"SanitizerPI","type":"typedef","url":"#typedefdef-sanitizerpi"}, "https://console.spec.whatwg.org/#report-a-warning-to-the-console": {"displayText":"report a warning to the console","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"","status":"anchor-block","text":"report a warning to the console","type":"dfn","url":"https://console.spec.whatwg.org/#report-a-warning-to-the-console"}, "https://dom.spec.whatwg.org/#comment": {"displayText":"Comment","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"Comment","type":"interface","url":"https://dom.spec.whatwg.org/#comment"}, "https://dom.spec.whatwg.org/#concept-attribute": {"displayText":"attribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"attribute","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-attribute"}, "https://dom.spec.whatwg.org/#concept-attribute-local-name": {"displayText":"local name","export":true,"for_":["Attr"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"local name","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-attribute-local-name"}, "https://dom.spec.whatwg.org/#concept-attribute-namespace": {"displayText":"namespace","export":true,"for_":["Attr"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"namespace","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-attribute-namespace"}, "https://dom.spec.whatwg.org/#concept-document-content-type": {"displayText":"content type","export":true,"for_":["Document"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"content type","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-document-content-type"}, "https://dom.spec.whatwg.org/#concept-element-attribute": {"displayText":"attribute list","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"attribute list","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-element-attribute"}, "https://dom.spec.whatwg.org/#concept-element-attributes-get-value": {"displayText":"get an attribute value","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"get an attribute value","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-element-attributes-get-value"}, "https://dom.spec.whatwg.org/#concept-element-attributes-remove": {"displayText":"remove an attribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"remove an attribute","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-element-attributes-remove"}, "https://dom.spec.whatwg.org/#concept-element-local-name": {"displayText":"local name","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"local name","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-element-local-name"}, "https://dom.spec.whatwg.org/#concept-element-namespace": {"displayText":"namespace","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"namespace","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-element-namespace"}, "https://dom.spec.whatwg.org/#concept-element-shadow-root": {"displayText":"shadow root","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"shadow root","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-element-shadow-root"}, "https://dom.spec.whatwg.org/#concept-node-append": {"displayText":"append","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"append","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-node-append"}, "https://dom.spec.whatwg.org/#concept-node-document": {"displayText":"node document","export":true,"for_":["Node"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"node document","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-node-document"}, "https://dom.spec.whatwg.org/#concept-node-remove": {"displayText":"remove","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"remove","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-node-remove"}, "https://dom.spec.whatwg.org/#concept-node-replace": {"displayText":"replace","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"replace","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-node-replace"}, "https://dom.spec.whatwg.org/#concept-node-replace-all": {"displayText":"replace all","export":true,"for_":["Node"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"replace all","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-node-replace-all"}, "https://dom.spec.whatwg.org/#concept-pi-target": {"displayText":"target","export":true,"for_":["ProcessingInstruction"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"target","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-pi-target"}, "https://dom.spec.whatwg.org/#concept-tree-child": {"displayText":"children","export":true,"for_":["tree"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"children","type":"dfn","url":"https://dom.spec.whatwg.org/#concept-tree-child"}, "https://dom.spec.whatwg.org/#document": {"displayText":"Document","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"Document","type":"interface","url":"https://dom.spec.whatwg.org/#document"}, "https://dom.spec.whatwg.org/#document-allow-declarative-shadow-roots": {"displayText":"allow declarative shadow roots","export":true,"for_":["Document"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"allow declarative shadow roots","type":"dfn","url":"https://dom.spec.whatwg.org/#document-allow-declarative-shadow-roots"}, "https://dom.spec.whatwg.org/#documentfragment": {"displayText":"DocumentFragment","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"DocumentFragment","type":"interface","url":"https://dom.spec.whatwg.org/#documentfragment"}, "https://dom.spec.whatwg.org/#documenttype": {"displayText":"DocumentType","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"DocumentType","type":"interface","url":"https://dom.spec.whatwg.org/#documenttype"}, "https://dom.spec.whatwg.org/#element": {"displayText":"Element","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"Element","type":"interface","url":"https://dom.spec.whatwg.org/#element"}, "https://dom.spec.whatwg.org/#element-shadow-host": {"displayText":"shadow host","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"shadow host","type":"dfn","url":"https://dom.spec.whatwg.org/#element-shadow-host"}, "https://dom.spec.whatwg.org/#node": {"displayText":"Node","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"Node","type":"interface","url":"https://dom.spec.whatwg.org/#node"}, "https://dom.spec.whatwg.org/#parentnode": {"displayText":"ParentNode","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"ParentNode","type":"interface","url":"https://dom.spec.whatwg.org/#parentnode"}, "https://dom.spec.whatwg.org/#processinginstruction": {"displayText":"ProcessingInstruction","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"ProcessingInstruction","type":"interface","url":"https://dom.spec.whatwg.org/#processinginstruction"}, "https://dom.spec.whatwg.org/#shadowroot": {"displayText":"ShadowRoot","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"ShadowRoot","type":"interface","url":"https://dom.spec.whatwg.org/#shadowroot"}, "https://dom.spec.whatwg.org/#text": {"displayText":"Text","export":true,"for_":[],"level":"1","normative":true,"shortname":"dom","spec":"dom","status":"current","text":"Text","type":"interface","url":"https://dom.spec.whatwg.org/#text"}, "https://html.spec.whatwg.org/#html-fragment-parsing-algorithm": {"displayText":"HTML fragment parsing algorithm","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"","status":"anchor-block","text":"html fragment parsing algorithm","type":"dfn","url":"https://html.spec.whatwg.org/#html-fragment-parsing-algorithm"}, "https://html.spec.whatwg.org/#parse-html-from-a-string": {"displayText":"parse HTML from a string","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"","status":"anchor-block","text":"parse html from a string","type":"dfn","url":"https://html.spec.whatwg.org/#parse-html-from-a-string"}, "https://html.spec.whatwg.org/multipage/custom-elements.html#cereactions": {"displayText":"CEReactions","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"CEReactions","type":"extended-attribute","url":"https://html.spec.whatwg.org/multipage/custom-elements.html#cereactions"}, "https://html.spec.whatwg.org/multipage/dom.html#custom-data-attribute": {"displayText":"custom data attribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"","status":"anchor-block","text":"custom data attribute","type":"dfn","url":"https://html.spec.whatwg.org/multipage/dom.html#custom-data-attribute"}, "https://html.spec.whatwg.org/multipage/dom.html#global-attributes": {"displayText":"global attribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"","status":"anchor-block","text":"global attribute","type":"dfn","url":"https://html.spec.whatwg.org/multipage/dom.html#global-attributes"}, "https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring": {"displayText":"parseFromString(string, type)","export":true,"for_":["DOMParser"],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"parseFromString(string, type)","type":"method","url":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring"}, "https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-element-innerhtml": {"displayText":"innerHTML","export":true,"for_":["Element"],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"innerHTML","type":"attribute","url":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-element-innerhtml"}, "https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparser": {"displayText":"DOMParser","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"DOMParser","type":"interface","url":"https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparser"}, "https://html.spec.whatwg.org/multipage/scripting.html#htmltemplateelement": {"displayText":"HTMLTemplateElement","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"HTMLTemplateElement","type":"interface","url":"https://html.spec.whatwg.org/multipage/scripting.html#htmltemplateelement"}, "https://html.spec.whatwg.org/multipage/scripting.html#template-contents": {"displayText":"template contents","export":false,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"template contents","type":"dfn","url":"https://html.spec.whatwg.org/multipage/scripting.html#template-contents"}, "https://html.spec.whatwg.org/multipage/webappapis.html#concept-relevant-global": {"displayText":"relevant global object","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"relevant global object","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#concept-relevant-global"}, "https://html.spec.whatwg.org/multipage/webappapis.html#current-global-object": {"displayText":"current global object","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"current global object","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#current-global-object"}, "https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-content-attributes": {"displayText":"event handler content attribute","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"event handler content attribute","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-content-attributes"}, "https://infra.spec.whatwg.org/#allowed": {"displayText":"allowed","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"allowed","type":"dfn","url":"https://infra.spec.whatwg.org/#allowed"}, "https://infra.spec.whatwg.org/#assert": {"displayText":"assert","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"assert","type":"dfn","url":"https://infra.spec.whatwg.org/#assert"}, "https://infra.spec.whatwg.org/#blocked": {"displayText":"blocked","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"blocked","type":"dfn","url":"https://infra.spec.whatwg.org/#blocked"}, "https://infra.spec.whatwg.org/#boolean": {"displayText":"boolean","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"boolean","type":"dfn","url":"https://infra.spec.whatwg.org/#boolean"}, "https://infra.spec.whatwg.org/#code-unit-less-than": {"displayText":"code unit less than","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"code unit less than","type":"dfn","url":"https://infra.spec.whatwg.org/#code-unit-less-than"}, "https://infra.spec.whatwg.org/#code-unit-prefix": {"displayText":"code unit prefix","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"code unit prefix","type":"dfn","url":"https://infra.spec.whatwg.org/#code-unit-prefix"}, "https://infra.spec.whatwg.org/#html-namespace": {"displayText":"HTML namespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"html namespace","type":"dfn","url":"https://infra.spec.whatwg.org/#html-namespace"}, "https://infra.spec.whatwg.org/#iteration-continue": {"displayText":"continue","export":true,"for_":["iteration"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"continue","type":"dfn","url":"https://infra.spec.whatwg.org/#iteration-continue"}, "https://infra.spec.whatwg.org/#list": {"displayText":"list","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"list","type":"dfn","url":"https://infra.spec.whatwg.org/#list"}, "https://infra.spec.whatwg.org/#list-append": {"displayText":"append","export":true,"for_":["list"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"append","type":"dfn","url":"https://infra.spec.whatwg.org/#list-append"}, "https://infra.spec.whatwg.org/#list-contain": {"displayText":"contain","export":true,"for_":["list","stack","queue","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"contain","type":"dfn","url":"https://infra.spec.whatwg.org/#list-contain"}, "https://infra.spec.whatwg.org/#list-empty": {"displayText":"empty","export":true,"for_":["list","stack","queue","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"empty","type":"dfn","url":"https://infra.spec.whatwg.org/#list-empty"}, "https://infra.spec.whatwg.org/#list-iterate": {"displayText":"iterate","export":true,"for_":["list","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"iterate","type":"dfn","url":"https://infra.spec.whatwg.org/#list-iterate"}, "https://infra.spec.whatwg.org/#list-remove": {"displayText":"remove","export":true,"for_":["list","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"remove","type":"dfn","url":"https://infra.spec.whatwg.org/#list-remove"}, "https://infra.spec.whatwg.org/#list-sort-in-ascending-order": {"displayText":"sort in ascending order","export":true,"for_":["list","stack","queue","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"sort in ascending order","type":"dfn","url":"https://infra.spec.whatwg.org/#list-sort-in-ascending-order"}, "https://infra.spec.whatwg.org/#map-entry": {"displayText":"entry","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"entry","type":"dfn","url":"https://infra.spec.whatwg.org/#map-entry"}, "https://infra.spec.whatwg.org/#map-exists": {"displayText":"exist","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"exist","type":"dfn","url":"https://infra.spec.whatwg.org/#map-exists"}, "https://infra.spec.whatwg.org/#map-getting-the-keys": {"displayText":"get the keys","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"get the keys","type":"dfn","url":"https://infra.spec.whatwg.org/#map-getting-the-keys"}, "https://infra.spec.whatwg.org/#map-key": {"displayText":"key","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"key","type":"dfn","url":"https://infra.spec.whatwg.org/#map-key"}, "https://infra.spec.whatwg.org/#map-remove": {"displayText":"remove","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"remove","type":"dfn","url":"https://infra.spec.whatwg.org/#map-remove"}, "https://infra.spec.whatwg.org/#map-set": {"displayText":"set","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"set","type":"dfn","url":"https://infra.spec.whatwg.org/#map-set"}, "https://infra.spec.whatwg.org/#map-value": {"displayText":"value","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"value","type":"dfn","url":"https://infra.spec.whatwg.org/#map-value"}, "https://infra.spec.whatwg.org/#map-with-default": {"displayText":"with default","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"with default","type":"dfn","url":"https://infra.spec.whatwg.org/#map-with-default"}, "https://infra.spec.whatwg.org/#mathml-namespace": {"displayText":"MathML namespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"mathml namespace","type":"dfn","url":"https://infra.spec.whatwg.org/#mathml-namespace"}, "https://infra.spec.whatwg.org/#ordered-map": {"displayText":"ordered map","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"ordered map","type":"dfn","url":"https://infra.spec.whatwg.org/#ordered-map"}, "https://infra.spec.whatwg.org/#ordered-set": {"displayText":"ordered set","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"ordered set","type":"dfn","url":"https://infra.spec.whatwg.org/#ordered-set"}, "https://infra.spec.whatwg.org/#set-append": {"displayText":"append","export":true,"for_":["set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"append","type":"dfn","url":"https://infra.spec.whatwg.org/#set-append"}, "https://infra.spec.whatwg.org/#set-difference": {"displayText":"difference","export":true,"for_":["set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"difference","type":"dfn","url":"https://infra.spec.whatwg.org/#set-difference"}, "https://infra.spec.whatwg.org/#set-intersection": {"displayText":"intersection","export":true,"for_":["set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"intersection","type":"dfn","url":"https://infra.spec.whatwg.org/#set-intersection"}, "https://infra.spec.whatwg.org/#set-subset": {"displayText":"subset","export":true,"for_":["set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"subset","type":"dfn","url":"https://infra.spec.whatwg.org/#set-subset"}, "https://infra.spec.whatwg.org/#set-superset": {"displayText":"superset","export":true,"for_":["set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"superset","type":"dfn","url":"https://infra.spec.whatwg.org/#set-superset"}, "https://infra.spec.whatwg.org/#string": {"displayText":"string","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"string","type":"dfn","url":"https://infra.spec.whatwg.org/#string"}, "https://infra.spec.whatwg.org/#string-is": {"displayText":"is","export":true,"for_":["string"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"is","type":"dfn","url":"https://infra.spec.whatwg.org/#string-is"}, "https://infra.spec.whatwg.org/#svg-namespace": {"displayText":"SVG namespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"svg namespace","type":"dfn","url":"https://infra.spec.whatwg.org/#svg-namespace"}, "https://infra.spec.whatwg.org/#tuple": {"displayText":"tuple","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"tuple","type":"dfn","url":"https://infra.spec.whatwg.org/#tuple"}, "https://infra.spec.whatwg.org/#user-agent": {"displayText":"user agent","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"user agent","type":"dfn","url":"https://infra.spec.whatwg.org/#user-agent"}, "https://infra.spec.whatwg.org/#xlink-namespace": {"displayText":"XLink namespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"xlink namespace","type":"dfn","url":"https://infra.spec.whatwg.org/#xlink-namespace"}, "https://msdn.microsoft.com/en-us/library/cc848922(v=vs.85).aspx": {"displayText":"window.toStaticHTML()","export":true,"for_":[],"level":"1","normative":true,"shortname":"sanitizer-api","spec":"","status":"anchor-block","text":"window.toStaticHTML()","type":"method","url":"https://msdn.microsoft.com/en-us/library/cc848922(v=vs.85).aspx"}, "https://url.spec.whatwg.org/#concept-basic-url-parser": {"displayText":"basic URL parser","export":true,"for_":[],"level":"1","normative":true,"shortname":"url","spec":"url","status":"current","text":"basic url parser","type":"dfn","url":"https://url.spec.whatwg.org/#concept-basic-url-parser"}, "https://url.spec.whatwg.org/#concept-url-scheme": {"displayText":"scheme","export":true,"for_":["url"],"level":"1","normative":true,"shortname":"url","spec":"url","status":"current","text":"scheme","type":"dfn","url":"https://url.spec.whatwg.org/#concept-url-scheme"}, "https://w3c.github.io/trusted-types/dist/spec/#get-trusted-type-compliant-string": {"displayText":"get trusted type compliant string","export":true,"for_":[],"level":"1","normative":true,"shortname":"trusted-types","spec":"trusted-types","status":"current","text":"get trusted type compliant string","type":"dfn","url":"https://w3c.github.io/trusted-types/dist/spec/#get-trusted-type-compliant-string"}, "https://w3c.github.io/trusted-types/dist/spec/#trustedhtml": {"displayText":"TrustedHTML","export":true,"for_":[],"level":"1","normative":true,"shortname":"trusted-types","spec":"trusted-types","status":"current","text":"TrustedHTML","type":"interface","url":"https://w3c.github.io/trusted-types/dist/spec/#trustedhtml"}, "https://webidl.spec.whatwg.org/#Exposed": {"displayText":"Exposed","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"Exposed","type":"extended-attribute","url":"https://webidl.spec.whatwg.org/#Exposed"}, "https://webidl.spec.whatwg.org/#dfn-dictionary": {"displayText":"dictionary","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"dictionary","type":"dfn","url":"https://webidl.spec.whatwg.org/#dfn-dictionary"}, "https://webidl.spec.whatwg.org/#dfn-throw": {"displayText":"throw","export":true,"for_":["exception"],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"throw","type":"dfn","url":"https://webidl.spec.whatwg.org/#dfn-throw"}, "https://webidl.spec.whatwg.org/#exceptiondef-typeerror": {"displayText":"TypeError","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"TypeError","type":"exception","url":"https://webidl.spec.whatwg.org/#exceptiondef-typeerror"}, "https://webidl.spec.whatwg.org/#idl-DOMString": {"displayText":"DOMString","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"DOMString","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-DOMString"}, "https://webidl.spec.whatwg.org/#idl-boolean": {"displayText":"boolean","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"boolean","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-boolean"}, "https://webidl.spec.whatwg.org/#idl-sequence": {"displayText":"sequence","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"sequence","type":"dfn","url":"https://webidl.spec.whatwg.org/#idl-sequence"}, "https://webidl.spec.whatwg.org/#idl-undefined": {"displayText":"undefined","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"undefined","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-undefined"}, "https://webidl.spec.whatwg.org/#implements": {"displayText":"implements","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"implements","type":"dfn","url":"https://webidl.spec.whatwg.org/#implements"}, "https://webidl.spec.whatwg.org/#this": {"displayText":"this","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"this","type":"dfn","url":"https://webidl.spec.whatwg.org/#this"}, }; function mkRefHint(link, ref) { const linkText = link.textContent; let dfnTextElements = ''; if (ref.displayText.toLowerCase() != linkText.toLowerCase()) { // Give the original term if it's being displayed in a different way. // But allow casing differences, they're insignificant. dfnTextElements = mk.li({}, mk.b({}, "Term: "), mk.span({}, ref.displayText) ); } const forList = ref.for_; let forListElements; if(forList.length == 0) { forListElements = []; } else if(forList.length == 1) { forListElements = mk.li({}, mk.b({}, "For: "), mk.span({}, forList[0]), ); } else { forListElements = mk.li({}, mk.b({}, "For: "), mk.ul({}, ...forList.map(forItem => mk.li({}, mk.span({}, forItem) ), ), ), ); } const url = ref.url; const safeUrl = encodeURIComponent(url); const hintPanel = mk.aside({ class: "ref-hint", id: `ref-hint-for-${safeUrl}`, "data-for": url, "aria-labelled-by": `ref-hint-for-${safeUrl}`, }, mk.ul({}, dfnTextElements, mk.li({}, mk.b({}, "URL: "), mk.a({ href: url, class: "ref" }, url), ), mk.li({}, mk.b({}, "Type: "), mk.span({}, `${ref.type}`), ), mk.li({}, mk.b({}, "Spec: "), mk.span({}, `${ref.spec ? ref.spec : ''}`), ), forListElements ), ); hintPanel.forLink = link; setupRefHintEventListeners(link, hintPanel); return hintPanel; } function hideAllRefHints() { queryAll(".ref-hint").forEach(el=>hideRefHint(el)); } function hideRefHint(refHint) { const link = refHint.forLink; link.setAttribute("aria-expanded", "false"); if(refHint.teardownEventListeners) { refHint.teardownEventListeners(); } refHint.remove(); } function showRefHint(link) { if(link.classList.contains("dfn-link")) return; const url = link.getAttribute("href"); const refHintKey = link.getAttribute("data-refhint-key"); let key = url; if(refHintKey) { key = refHintKey + "_" + url; } const ref = refsData[key]; if(!ref) return; hideAllRefHints(); // Only display one at this time. const refHint = mkRefHint(link, ref); append(document.body, refHint); link.setAttribute("aria-expanded", "true"); positionRefHint(refHint); } function setupRefHintEventListeners(link, refHint) { if (refHint.teardownEventListeners) return; // Add event handlers to hide the refHint after the user moves away // from both the link and refHint, if not hovering either within one second. let timeout = null; const startHidingRefHint = (event) => { if (timeout) { clearTimeout(timeout); } timeout = setTimeout(() => { hideRefHint(refHint); }, 1000); } const resetHidingRefHint = (event) => { if (timeout) clearTimeout(timeout); timeout = null; }; link.addEventListener("mouseleave", startHidingRefHint); link.addEventListener("mouseenter", resetHidingRefHint); link.addEventListener("blur", startHidingRefHint); link.addEventListener("focus", resetHidingRefHint); refHint.addEventListener("mouseleave", startHidingRefHint); refHint.addEventListener("mouseenter", resetHidingRefHint); refHint.addEventListener("blur", startHidingRefHint); refHint.addEventListener("focus", resetHidingRefHint); refHint.teardownEventListeners = () => { // remove event listeners resetHidingRefHint(); link.removeEventListener("mouseleave", startHidingRefHint); link.removeEventListener("mouseenter", resetHidingRefHint); link.removeEventListener("blur", startHidingRefHint); link.removeEventListener("focus", resetHidingRefHint); refHint.removeEventListener("mouseleave", startHidingRefHint); refHint.removeEventListener("mouseenter", resetHidingRefHint); refHint.removeEventListener("blur", startHidingRefHint); refHint.removeEventListener("focus", resetHidingRefHint); }; } function positionRefHint(refHint) { const link = refHint.forLink; const linkPos = getBounds(link); refHint.style.top = linkPos.bottom + "px"; refHint.style.left = linkPos.left + "px"; const panelPos = refHint.getBoundingClientRect(); const panelMargin = 8; const maxRight = document.body.parentNode.clientWidth - panelMargin; if (panelPos.right > maxRight) { const overflowAmount = panelPos.right - maxRight; const newLeft = Math.max(panelMargin, linkPos.left - overflowAmount); refHint.style.left = newLeft + "px"; } } // TODO: shared util // Returns the root-level absolute position {left and top} of element. function getBounds(el, relativeTo=document.body) { const relativeRect = relativeTo.getBoundingClientRect(); const elRect = el.getBoundingClientRect(); const top = elRect.top - relativeRect.top; const left = elRect.left - relativeRect.left; return { top, left, bottom: top + elRect.height, right: left + elRect.width, } } function showRefHintListener(e) { // If the target isn't in a link (or is a link), // just ignore it. let link = e.target.closest("a"); if(!link) return; // If the target is in a ref-hint panel // (aka a link in the already-open one), // also just ignore it. if(link.closest(".ref-hint")) return; // Otherwise, show the panel for the link. showRefHint(link); } function hideAllHintsListener(e) { // If the click is inside a ref-hint panel, ignore it. if(e.target.closest(".ref-hint")) return; // Otherwise, close all the current panels. hideAllRefHints(); } document.addEventListener("DOMContentLoaded", () => { document.body.addEventListener("mousedown", showRefHintListener); document.body.addEventListener("focus", showRefHintListener); document.body.addEventListener("click", hideAllHintsListener); }); window.addEventListener("resize", () => { // Hide any open ref hint. hideAllRefHints(); }); } /* Boilerplate: script-var-click-highlighting */ "use strict"; { /* Color-choosing design: * Colors are ordered by goodness. * On clicking a var, give it the earliest color with the lowest usage in the algorithm. * On re-clicking, re-use the var's most recent color if that's not currently being used elsewhere. */ const COLOR_COUNT = 7; document.addEventListener("click", e=>{ if(e.target.nodeName == "VAR") { highlightSameAlgoVars(e.target); } }); function highlightSameAlgoVars(v) { // Find the algorithm container. let algoContainer = findAlgoContainer(v); // Not highlighting document-global vars, // too likely to be unrelated. if(algoContainer == null) return; const varName = nameFromVar(v); if(!v.hasAttribute("data-var-color")) { const newColor = chooseHighlightColor(algoContainer, v); for(const el of algoContainer.querySelectorAll("var")) { if(nameFromVar(el) == varName) { el.setAttribute("data-var-color", newColor); el.setAttribute("data-var-last-color", newColor); } } } else { for(const el of algoContainer.querySelectorAll("var")) { if(nameFromVar(el) == varName) { el.removeAttribute("data-var-color"); } } } } function findAlgoContainer(el) { while(el != document.body) { if(el.hasAttribute("data-algorithm")) return el; el = el.parentNode; } return null; } function nameFromVar(el) { return el.textContent.replace(/(\s|\xa0)+/g, " ").trim(); } function colorCountsFromContainer(container) { const namesFromColor = Array.from({length:COLOR_COUNT}, x=>new Set()); for(let v of container.querySelectorAll("var[data-var-color]")) { let color = +v.getAttribute("data-var-color"); namesFromColor[color].add(nameFromVar(v)); } return namesFromColor.map(x=>x.size); } function leastUsedColor(colors) { // Find the earliest color with the lowest count. let minCount = Infinity; let minColor = null; for(var i = 0; i < colors.length; i++) { if(colors[i] < minCount) { minColor = i; minCount = colors[i]; } } return minColor; } function chooseHighlightColor(container, v) { const colorCounts = colorCountsFromContainer(container); if(v.hasAttribute("data-var-last-color")) { let color = +v.getAttribute("data-var-last-color"); if(colorCounts[color] == 0) return color; } return leastUsedColor(colorCounts); } }