@@ -45,6 +45,7 @@ INSTALLED_APPS = ( |
||
45 | 45 |
'django.contrib.messages', |
46 | 46 |
'django.contrib.staticfiles', |
47 | 47 |
'django_file_upload', |
48 |
+ 'django_onerror', |
|
48 | 49 |
'django_uniapi', |
49 | 50 |
'django_admin', |
50 | 51 |
'django_rlog', |
@@ -30,6 +30,10 @@ urlpatterns = [ |
||
30 | 30 |
url(r'^kodoadmin/', admin.site.urls), |
31 | 31 |
] |
32 | 32 |
|
33 |
+urlpatterns += [ |
|
34 |
+ url(r'^e/', include('django_onerror.urls', namespace='django_onerror')), |
|
35 |
+] |
|
36 |
+ |
|
33 | 37 |
# Mini App |
34 | 38 |
urlpatterns += [ |
35 | 39 |
url(r'^mini/userinfo$', mini_views.get_userinfo_api, name='get_userinfo_api2'), # 获取用户信息 |
@@ -103,6 +103,30 @@ |
||
103 | 103 |
</div> |
104 | 104 |
</div> |
105 | 105 |
|
106 |
+ <script> |
|
107 |
+ window.onerror = function(errorMessage, scriptURI, lineNo, columnNo, error) { |
|
108 |
+ if (['Uncaught ReferenceError: WeixinJSBridge is not defined', 'ResizeObserver loop limit exceeded'].indexOf(errorMessage) >= 0) { |
|
109 |
+ return |
|
110 |
+ } |
|
111 |
+ // 构建错误对象 |
|
112 |
+ var errorObj = { |
|
113 |
+ href: window.location.href, |
|
114 |
+ ua: window.navigator.userAgent, |
|
115 |
+ lineNo: lineNo || 0, |
|
116 |
+ columnNo: columnNo || 0, |
|
117 |
+ scriptURI: scriptURI || null, |
|
118 |
+ errorMessage: errorMessage || null, |
|
119 |
+ stack: error && error.stack ? error.stack : null |
|
120 |
+ }; |
|
121 |
+ // 构建Http请求 |
|
122 |
+ if (XMLHttpRequest) { |
|
123 |
+ var xhr = new XMLHttpRequest(); |
|
124 |
+ xhr.open('post', '/e/report', true); |
|
125 |
+ xhr.setRequestHeader('Content-Type', 'application/json'); // 设置请求头 |
|
126 |
+ xhr.send(JSON.stringify(errorObj)); // 发送参数 |
|
127 |
+ } |
|
128 |
+ } |
|
129 |
+ </script> |
|
106 | 130 |
<script src="//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.6/zepto.min.js"></script> |
107 | 131 |
<script> |
108 | 132 |
{% if modified %} |
@@ -13,6 +13,7 @@ django-logit==1.1.3 |
||
13 | 13 |
django-mobi2==1.0.2 |
14 | 14 |
django-models-ext==1.1.10 |
15 | 15 |
django-multidomain==1.1.4 |
16 |
+django-onerror==1.1.0 |
|
16 | 17 |
django-paginator2==1.1.3 |
17 | 18 |
django-query==1.0.6 |
18 | 19 |
django-redis-connector==1.0.4 |