diff options
| author | rde <rde@odoo.com> | 2017-09-29 13:48:33 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2017-09-30 12:21:27 +0200 |
| commit | 4bd8e3e2ed48eb05b9e155826fd47753a85b5731 (patch) | |
| tree | a0c2b6e7ab80bcf313208031bed065a31139f9a3 /addons/website/static/src/js | |
| parent | c837eaca9f41f2345e72500234d1562e009fd110 (diff) | |
[IMP] website: Script injected in DOM: window.onerror empty params
Before this commit, error thrown by scripts injected in DOM won't return a
clean error on window.onerror.
It would open the crash_manager's show_error's dialog that wouldn't display
any informations except "Script Error." and "Traceback:".
This is because of browser's security reason: it will just give you a
'Script error.' as message and nothing else for security issue.
Now, this kind of error will show a clearer message informing that it is
probably originating from a Javascript file served from a different origin.
There is now also the possibility for developers to handle/override the
behavior when this kind of error is catch to prevent the dialog to open for
example.
Might be of use:
https://blog.sentry.io/2016/05/17/what-is-script-error.html
https://stackoverflow.com/a/7778424
https://danlimerick.wordpress.com/2014/01/18/how-to-catch-javascript-errors-with-window-onerror-even-on-chrome-and-firefox/ (Search for Script Error)
Diffstat (limited to 'addons/website/static/src/js')
| -rw-r--r-- | addons/website/static/src/js/backend/dashboard.js | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/addons/website/static/src/js/backend/dashboard.js b/addons/website/static/src/js/backend/dashboard.js index c48da63e59d..c140e61c3e5 100644 --- a/addons/website/static/src/js/backend/dashboard.js +++ b/addons/website/static/src/js/backend/dashboard.js @@ -198,10 +198,15 @@ var Dashboard = Widget.extend(ControlPanelMixin, { $analytics_components.empty(); // 1. Authorize component var $analytics_auth = $('<div>').addClass('col-md-12'); + window.onOriginError = function () { + $analytics_components.find('.js_unauthorized_message').remove(); + self.display_unauthorized_message($analytics_components, 'not_initialized'); + }; gapi.analytics.auth.authorize({ container: $analytics_auth[0], clientid: client_id }); + $analytics_auth.appendTo($analytics_components); self.handle_analytics_auth($analytics_components); |
