<script …> … </script>
tags <script …> … </script>
and, if it is not rendered in the JavaScript file, runs it through eval (), or loads the file containing JavaScript, and runs via eval () received code. It's simple. The function code is shown below:* This source code was highlighted with Source Code Highlighter .
- function sbExecScript (text)
- {
- if (! text)
- return ;
- if (window.execScript)
- {
- window.execScript (text);
- }
- else
- {
- var script = document .createElement ( 'script' );
- script.setAttribute ( 'type' , 'text / javascript' );
- script.setAttribute ( 'language' , 'JavaScript' );
- if (_isIE)
- script.text = text;
- else
- script.appendChild ( document .createTextNode (text));
- var head = document .getElementsByTagName ( "head" ) [0] || document .documentElement;
- head.insertBefore (script, head.firstChild);
- head.removeChild (script);
- }
- return ;
- }
- var sbEvalJSSrcs = [];
- function sbEvalJS (s)
- {
- var js_ScriptFragment = '(?: <script. *?>) (((\ n | \ r |.) *?) (?: <\ / script>)' ;
- var js_ScriptSrcFragment = '<script. + (src [] * = [] * \' (. *?) \ '| src [] * = [] * "(. *?)"). +' ;
- var matchAll = new RegExp (js_ScriptFragment, 'img' );
- var matchOne = new RegExp (js_ScriptFragment, 'im' );
- var matchSrc = new RegExp (js_ScriptSrcFragment, 'im' );
- var arr = s.match (matchAll) || [];
- var JSCode = [];
- for ( var i = 0; i <arr.length; i ++)
- {
- var srcMt = arr [i] .match (matchSrc);
- if (srcMt)
- {
- if (srcMt.length> 3)
- srcMt = srcMt [3];
- else
- srcMt = srcMt [2];
- if (srcMt! = '' )
- {
- var found = false ;
- for ( var j = 0; j <sbEvalJSSrcs.length; j ++)
- {
- if (sbEvalJSSrcs [j] == srcMt)
- {
- found = true ;
- break ;
- }
- }
- if (found)
- continue ;
- sbEvalJSSrcs [sbEvalJSSrcs.length] = srcMt;
- var res = sbLoadSync (srcMt);
- if (res)
- JSCode [JSCode.length] = res;
- }
- }
- var mtCode = arr [i] .match (matchOne);
- if (mtCode && mtCode [1]! = '' )
- JSCode [JSCode.length] = mtCode [1];
- }
- s = s.replace (matchAll, '' );
- for ( var i = 0; i <JSCode.length; i ++)
- sbExecScript (JSCode [i]);
- return s;
- }
Source: https://habr.com/ru/post/41910/
All Articles