Elements boundaries
Note that using a blockElementsBoundary option only makes sense with acrossElements option when highlighting phrases, or RegExp capturing groups, or using a wildcards character * with wildcards : 'withSpaces' option (can match multiple words).
This, how library aggregates all context(s) text node contents into a single string with blockElementsBoundary: true option:
if a block element 'divides' two text nodes, \x01 character with spaces (it depends) is added between them,
e.g. '<h1>Header</h1><p>Paragraph</p>' resulted in 'Header \x01 Paragraph'.
With different values the option allows matches across all HTML elements:
blockElementsBoundary: trueexcept default block elementsblockElementsBoundary: { tagNames: [..] }except custom element(s)blockElementsBoundary: { tagNames: [..], extend : true }except default block elements and custom element(s)
Boundary object:
tagNames{string[]} - An array of custom tag names. (default isundefined)extend{boolean} - Whether to extend default block elements with custom elements (true) or to make only custom elements have boundaries. (default isfalse)char{string} - A custom boundary char. (default is\x01)
Example:
instance.mark('lorem ipsum dolor', {
'separateWordSearch' : false,
'acrossElements' : true,
'blockElementsBoundary' : true
// or
'blockElementsBoundary' : {
// only these custom elements have boundaries
'tagNames' : ['div', 'p', 'h1', 'h2'], // optional
// custom boundary char, default is '\x01'
'char' : '.' // optional
}
});
Extending default block elements with custom elements:
instance.markRegExp(/.../gi, {
'acrossElements' : true,
'blockElementsBoundary' : {
// custom elements are added to the default block elements
'tagNames' : ['tab-container', 'custom-tag'],
'extend' : true
}
});
The default elements are:
address, area, article, aside, audio, blockquote, body, br, button, canvas, dd, details, div, dl, dt, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hr, iframe, img, input, label, li, main, map, menu, menuitem, meter, nav, object, ol, output, p, picture, pre, section, select, svg, table, tbody, td, textarea, tfoot, th, thead, tr, track, ul, video