Я пытаюсь создать и запустить некоторые JS кода путем создания тега сценария и вставки кода с помощью свойства innerHtml, но я получаю следующее сообщение об ошибке:Uncaught SyntaxError: Неожиданный маркер^(анонимная функция)
Uncaught SyntaxError: Unexpected token^(anonymous function) (line 50)
Линия 50, где я добавляю тег к телу.
body.appendChild(krux);
Может ли кто-нибудь просмотреть мой код и сообщить мне, могут ли они обнаружить какие-либо ошибки? Я использую эту технику с множеством других сторонних тегов и до сих пор не имел никаких проблем.
Спасибо!
<!DOCTYPE html>
<html>
<body>
<head>
<title>Example Page</title>
</head>
<script>
var body = document.getElementsByTagName("body")[0];
var krux = ""+
"window.Krux || ((Krux=function(){Krux.q.push(arguments);}).q=[]);"+
"(function(){"+
" function retrieve(n){"+
" var m, k='kx'+n;"+
" if (window.localStorage) {"+
" return window.localStorage[k] || '';"+
" } else if (navigator.cookieEnabled) {"+
" m = document.cookie.match(k+'=([^;]*)');"+
" return (m && unescape(m[1])) || '';"+
" } else {"+
" return '';"+
" }"+
" }"+
""+
" Krux.user = retrieve('user');"+
" Krux.segments = retrieve('segs') ? retrieve('segs').split(',') : [];"+
""+
" var dfpp = [];"+
" if (Krux.user) {"+
" dfpp.push('khost=' + encodeURIComponent(location.hostname));"+
" dfpp.push('kuid=' + Krux.user);"+
" }"+
" for (var i = 0; i < Krux.segments.length; i++) {"+
" dfpp.push('ksg=' + Krux.segments[i]);"+
" }"+
" Krux.dfppKeyValues = dfpp.length ? dfpp.join(';') + ';' : '';"+
"})();"+
""+
"(function(){"+
" var k=document.createElement('script');k.type='text/javascript';k.async=true;"+
" var m,src=(m=location.href.match(/\bkxsrc=([^&]+)/))&&decodeURIComponent(m[1]);"+
" k.src = /^https?:\/\/([^\/]+\.)?krxd\.net(:\d{1,5})?\//i.test(src) ? src : src === 'disable' ? '' : "+
" (location.protocol==='https:'?'https:':'http:')+'//cdn.krxd.net/controltag?confid=IkIevuhg';"+
" var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(k,s);"+
"}());";
var script = document.createElement("script");
script.type = "text/javascript";
script.innerHTML = krux;
body.appendChild(script);
</script>
</body>
</html>
Зачем вам это делать, а не просто запускать сценарий? – qwertynl
Ваше регулярное выражение неправильно экранировано в строковом литерале ('' k.src =/^ https?: \/\/([^ \ /] + \.) '). Но решение не должно его избегать но прекратить писать javascript-код в литеральном литерале javascript –
@qwertynl прав. Это слишком сложно для отладки. – karthikr