hijacking-webpack-plugin
Version:
3 lines (2 loc) • 2.43 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e["hijacking-webpack-plugin"]=t()}(this,function(){"use strict";return function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{id:"app",head:[],body:[],isRejectJACK:!1,filterTags:["script","iframe"],whiteURLS:[],fn:null};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.options=e}return t.prototype._genScript=function(e,t,i){var n="";e.forEach(function(e){var t=["<script"];for(var i in e)e[i]&&"defer"!==i&&"async"!==i&&t.push(i+'="'+e[i]+'"'),!e[i]||"defer"!==i&&"async"!==i||t.push(""+i);t.push("><\/script>");var r=t.join(" ");n+=r+"\n"}),t.html=t.html.replace("</"+i+">",n+"</"+i+">")},t.prototype.apply=function(e){var s=this;e.plugin("compilation",function(e){var t=s.options,i=t.head,r=t.body,n=t.isRejectJACK,o=t.whiteURLS,a=t.filterTags;e.plugin("html-webpack-plugin-before-html-processing",function(e,t){n&&(e.html=e.html.replace("<head>",'<head><script fl2294-eddy>\n (function(){var _filterTags="'+a+'",_whiteURLS="'+o+'";var srcFilterTags=_filterTags&&_filterTags.split(",")||[];var whiteList=_whiteURLS&&_whiteURLS.split(",")||[];var whiteListReg=[];whiteList.forEach(function(wl){var wlReg=new RegExp("/.+?//"+wl+"|//"+wl+"|.+?."+wl+"|^"+wl);whiteListReg.push(wlReg)});var inWhileList=function(addedNode){if(addedNode.src===""&&addedNode.getAttribute("fl2294-eddy")!==null){return true}var isInWhiteList=false;whiteListReg.forEach(function(wlReg){if(wlReg.test(addedNode.src)){isInWhiteList=true}});return isInWhiteList};var mutationHandler=function(records){records.forEach(function(record){Array.prototype.slice.call(record.addedNodes).forEach(function(addedNode){srcFilterTags.forEach(function(tagName){if(addedNode.tagName===tagName.toUpperCase()&&!inWhileList(addedNode)){addedNode.remove()}})})})};var MutationObserver=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,observeMutationSupport=!!MutationObserver;var html=document.getElementsByTagName("html")[0];if(observeMutationSupport){new MutationObserver(mutationHandler).observe(html,{"childList":true,"subtree":true})}})();\n <\/script>')),i&&i.length&&s._genScript(i,e,"head"),r&&r.length&&s._genScript(r,e,"body"),t(null,e)})})},t}()});
//# sourceMappingURL=index.js.map