未捕获的语法错误:意外的标记^(匿名函数)
Uncaught SyntaxError: Unexpected token ^ (anonymous function)
我试图通过创建脚本标记并通过innerHtml属性插入代码来创建和运行一些JS代码,但我一直收到以下错误消息:
未捕获的语法错误:意外的标记^(匿名函数)(行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>
正则表达式在字符串文字(" k.src = /^https?:'/'/([^'/]+'.)
)中没有正确转义:必须用''
替换'
。
但正确的解决方案不是逃避它,而是停止用javascript字符串文字编写javascript代码。有很多方法可以在页面中动态插入脚本,例如使用AJAX。
错误来自您试图解析为javascript的巨大字符串,错误就在那里。
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- Javascript:函数返回意外结果
- Javascript 数组反向函数意外行为
- HTML 无法识别我要求它运行的 javascript 文件,语法错误:意外的令牌“<”(匿名函数)script.js:
- QML:Lambda 函数意外工作
- 意外的“else”和函数未运行
- 一个javascript函数导致“;意外标识符”;来自不同函数的错误
- Underscore.js:具有_.object函数的意外行为
- JavaScript自定义函数返回意外值
- 调用加载的顺序函数会意外中断代码
- 使用'时出现意外的T_FUNCTION;回调'=>函数($resp)
- JavaScript - 意外/奇怪的构造函数
- 未捕获的语法错误:意外的标记^(匿名函数)
- jQuery模块函数意外返回'未捕获的类型错误'
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- .css函数意外令牌非法 jquery
- 主干渲染函数:意外令牌非法
- jQuery函数-意外行为
- 使用Moment.js的JS间隔生成函数:意外输出