forked from hail2u/jquery.highlight-search-terms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.highlight-search-terms.min.js
6 lines (6 loc) · 1.56 KB
/
jquery.highlight-search-terms.min.js
1
2
3
4
5
6
/**
* @preserve jQuery Plugin: Highlight Search Terms v0.4.2
*
* LICENSE: http://hail2u.mit-license.org/2009
*/
(function($){"use strict";function extractSearchTerms(ref,o){var terms="";$.each(o.referrerPatterns,function(){var pattern=new RegExp(this,"i"),unsafe;if(pattern.exec(ref)){unsafe=new RegExp(o.unsafeChars,"g");terms=decodeURIComponent(RegExp.$1).replace(unsafe,"+").replace(/^\+*(.*?)\+*$/,"$1").replace(/\++/g,"|");return false}});return terms}function encodeEntities(s){return $("<u/>").text(s).html()}$.fn.highlightSearchTerms=function(options){var o=$.extend({},$.fn.highlightSearchTerms.defaults,options),ref,terms,t,c,highlighted;$.merge(o.referrerPatterns,$.fn.highlightSearchTerms.builtinReferrerPatterns);ref=o.referrer||document.referrer;if(ref){terms=extractSearchTerms(ref,o);if(terms!==""){terms=new RegExp("("+terms+")","gi");t=encodeEntities(o.tagName);c=encodeEntities(o.className);highlighted="<"+t+' class="'+c+'">$1</'+t+">";this.find(":not(iframe, option, script, textarea)").contents().each(function(){if(this.nodeType===3){var s=encodeEntities(this.nodeValue).replace(terms,highlighted);$(this).replaceWith(s)}})}}return this};$.fn.highlightSearchTerms.defaults={tagName:"em",className:"highlight",referrerPatterns:[],unsafeChars:"[!-*,-/:-@[-`{-~]"};$.fn.highlightSearchTerms.builtinReferrerPatterns=["^http://www\\.google\\.com.+[&?]q=([^&]+).*$","^http://www\\.google\\.co\\.jp.+[&?]q=([^&]+).*$","^http://search\\.yahoo\\.com.+[&?]p=([^&]+).*$","^http://search\\.yahoo\\.co\\.jp.+[&?]p=([^&]+).*$","^http://www\\.bing\\.com.+[&?]q=([^&]+).*$"]})(jQuery);