chrome,firefox下面運行都很正常,唯獨在safari下會爆SyntaxError: DOM Exception 12錯誤:
[Error] Error: SyntaxError: DOM Exception 12
setRequestHeader@[
native code]
http:
//localhost:8989/app/js/base.js:40967:27
http:
//localhost:8989/app/js/base.js:19014:33
forEach@http:
//localhost:8989/app/js/base.js:9537:24
http:
//localhost:8989/app/js/base.js:19012:14
sendReq@http:
//localhost:8989/app/js/base.js:18873:21
serverRequest@http:
//localhost:8989/app/js/base.js:18589:23
processQueue@http:
//localhost:8989/app/js/base.js:22454:29
http:
//localhost:8989/app/js/base.js:22470:39
$eval@http:
//localhost:8989/app/js/base.js:23672:28
$digest@http:
//localhost:8989/app/js/base.js:23488:36
$apply@http:
//localhost:8989/app/js/base.js:23777:31
bootstrapApply@http:
//localhost:8989/app/js/base.js:10661:21
invoke@http:
//localhost:8989/app/js/base.js:13409:22
doBootstrap@http:
//localhost:8989/app/js/base.js:10659:20
bootstrap@http:
//localhost:8989/app/js/base.js:10679:23
angularInit@http:
//localhost:8989/app/js/base.js:10573:14
http:
//localhost:8989/app/js/base.js:35510:16
fire@http:
//localhost:8989/app/js/base.js:3094:35
fireWith@http:
//localhost:8989/app/js/base.js:3206:11
ready@http:
//localhost:8989/app/js/base.js:3412:24
completed@http:
//localhost:8989/app/js/base.js:3428:14

這是個什么error?沒見過baidu一下有了:
DOMException是W3C DOM核心對象。
DOMException接口表示一個處理的錯誤,當一個操作不可能執行的時候,會拋出一個異常。
例如試圖創建一個無效的DOM, 或通過一個不存在的節點作為參數節點操作方法。
SYNTAX_ERR code 12 --> 無效或非法的字符串被指定。
具休介紹可以到些鏈接查看: http:
//www.zhangxinxu.com/wordpress/2012/05/w3c-dom-domexception-object/
先從error stack中找到出錯的地方,在angular-file-upload-all.js中的以下位置:
1 var key, i;
2 function patchXHR(fnName, newFn) {
3 window.XMLHttpRequest.prototype[fnName] = newFn(window.XMLHttpRequest.prototype[fnName]);
4 }
5
6
if (window.XMLHttpRequest && !window.XMLHttpRequest.__isFileAPIShim) {
7 patchXHR('setRequestHeader', function (orig) {
8
return function (header, value) {
9
if (header === '__setXHR_') {
10 var val = value(
this);
11
// fix for angular < 1.2.0
12
if (val
instanceof Function) {
13 val(
this);
14 }
15 }
else {
16 orig.apply(
this, arguments);
17 }
18 }
19 });
20 }
出錯的位置在第16行,把header打出來看了一下,Authorization的值是這樣的'Token '的,后面多了一個空格,果斷刪除掉空格再試,不爆錯了,原來是空格惹的禍,為什么會出錯呢,想去看看這個orig的內容是什么,可碰到[
native code],這個估計是c++的code,這個要如何看得到內容呢,問題是解決了,但還未探清問題的源頭,又是c代碼,請高人指點。