@@ -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 |