|
|
| (13 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| <script>jQuery.fn.highlight = function(pat, className) { | | <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> |
| function innerHighlight(node, pat) {
| | <script src="/skins/BuNay/resources/jquery.highlight-3.js"></script> |
| var skip = 0;
| | <script> $(document).ready(function() { $('#searchresults').highlight('<!--{$term}-->'); }); </script> |
| if (node.nodeType === 3) {
| |
| var pos = node.data.toUpperCase().indexOf(pat.toUpperCase());
| |
| if (pos >= 0) {
| |
| var spannode = document.createElement('span');
| |
| spannode.className = className || 'highlight';
| |
| var middlebit = node.splitText(pos);
| |
| var endbit = middlebit.splitText(pat.length);
| |
| var middleclone = middlebit.cloneNode(true);
| |
| spannode.appendChild(middleclone);
| |
| middlebit.parentNode.replaceChild(spannode, middlebit);
| |
| skip = 1;
| |
| }
| |
| }
| |
| else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
| |
| for (var i = 0; i < node.childNodes.length; ++i) {
| |
| i += innerHighlight(node.childNodes[i], pat);
| |
| }
| |
| }
| |
| return skip;
| |
| }
| |
| return this.each(function() {
| |
| innerHighlight(this, pat.toUpperCase());
| |
| });
| |
| };
| |
| | |
| jQuery.fn.removeHighlight = function(className) {
| |
| var className = className || 'highlight';
| |
| | |
| function newNormalize(node) {
| |
| for (var i = 0, children = node.childNodes, nodeCount = children.length; i < nodeCount; i++) {
| |
| var child = children[i];
| |
| if (child.nodeType == 1) {
| |
| newNormalize(child);
| |
| continue;
| |
| }
| |
| if (child.nodeType != 3) { continue; }
| |
| var next = child.nextSibling;
| |
| if (next == null || next.nodeType != 3) { continue; }
| |
| var combined_text = child.nodeValue + next.nodeValue;
| |
| new_node = node.ownerDocument.createTextNode(combined_text);
| |
| node.insertBefore(new_node, child);
| |
| node.removeChild(child);
| |
| node.removeChild(next);
| |
| i--;
| |
| nodeCount--;
| |
| }
| |
| }
| |
|
| |
| return this.find("span."+className).each(function() {
| |
| var thisParent = this.parentNode;
| |
| thisParent.replaceChild(this.firstChild, this);
| |
| newNormalize(thisParent);
| |
| }).end();
| |
| };
| |
| | |
| | |
| $(function() {$('#searchresults').highlight('<!--{$term}-->');});
| |
| | |
| </script> | |