forked from extern/egroupware
several IE11 fixes avoiding or working around javascript errors
This commit is contained in:
parent
2f8b7064d8
commit
b692346cce
@ -100,6 +100,8 @@ var AppJS = Class.extend(
|
|||||||
*/
|
*/
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
delete this.et2;
|
delete this.et2;
|
||||||
|
if (this.sidebox)
|
||||||
|
this.sidebox.off();
|
||||||
delete this.sidebox;
|
delete this.sidebox;
|
||||||
delete window.app[this.appname];
|
delete window.app[this.appname];
|
||||||
},
|
},
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
* @param _moduleInstances is the the object which contains the application
|
* @param _moduleInstances is the the object which contains the application
|
||||||
* and window specific module instances.
|
* and window specific module instances.
|
||||||
* @param _instances refers to all api instances.
|
* @param _instances refers to all api instances.
|
||||||
* @param _wnd is the window for which the module instances should get
|
* @param _window is the window for which the module instances should get
|
||||||
* created.
|
* created.
|
||||||
*/
|
*/
|
||||||
function getWndModules(_egw, _modules, _moduleInstances, _instances, _window)
|
function getWndModules(_egw, _modules, _moduleInstances, _instances, _window)
|
||||||
@ -139,8 +139,9 @@
|
|||||||
// called, we have to delete the module slot created above
|
// called, we have to delete the module slot created above
|
||||||
var fnct = function() {
|
var fnct = function() {
|
||||||
cleanupEgwInstances(_instances, _moduleInstances, function(_w) {
|
cleanupEgwInstances(_instances, _moduleInstances, function(_w) {
|
||||||
return _w.window === _window});
|
return _w.window === _window;
|
||||||
};
|
});
|
||||||
|
};
|
||||||
if (_window.attachEvent)
|
if (_window.attachEvent)
|
||||||
{
|
{
|
||||||
_window.attachEvent('onbeforeunload', fnct);
|
_window.attachEvent('onbeforeunload', fnct);
|
||||||
@ -259,7 +260,7 @@
|
|||||||
if (typeof _instances[hash] === 'undefined')
|
if (typeof _instances[hash] === 'undefined')
|
||||||
{
|
{
|
||||||
_instances[hash] = [];
|
_instances[hash] = [];
|
||||||
return createEgwInstance(_egw, _modules, _moduleInstances,
|
return createEgwInstance(_egw, _modules, _moduleInstances,
|
||||||
_instances[hash], _instances, _app, _window);
|
_instances[hash], _instances, _app, _window);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -277,7 +278,7 @@
|
|||||||
|
|
||||||
// If we're still here, no API instance for the given window has been
|
// If we're still here, no API instance for the given window has been
|
||||||
// found -- create a new entry
|
// found -- create a new entry
|
||||||
return createEgwInstance(_egw, _modules, _moduleInstances,
|
return createEgwInstance(_egw, _modules, _moduleInstances,
|
||||||
_instances[hash], _instances, _app, _window);
|
_instances[hash], _instances, _app, _window);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,7 +404,7 @@
|
|||||||
'app': {},
|
'app': {},
|
||||||
'wnd': [],
|
'wnd': [],
|
||||||
'glo': {}
|
'glo': {}
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* instances contains references to all created instances.
|
* instances contains references to all created instances.
|
||||||
@ -416,7 +417,13 @@
|
|||||||
*/
|
*/
|
||||||
window.setInterval(function() {
|
window.setInterval(function() {
|
||||||
cleanupEgwInstances(instances, moduleInstances, function(w) {
|
cleanupEgwInstances(instances, moduleInstances, function(w) {
|
||||||
return w.window && w.window.closed
|
try {
|
||||||
|
return w.window && w.window.closed;
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
// IE(11) seems to throw a permission denied error, when accessing closed property
|
||||||
|
return true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}, 10000);
|
}, 10000);
|
||||||
|
|
||||||
|
@ -283,8 +283,16 @@ egw.extend('debug', egw.MODULE_GLOBAL, function(_app, _wnd) {
|
|||||||
// bind to global error handler
|
// bind to global error handler
|
||||||
jQuery(_wnd).on('error', function(e)
|
jQuery(_wnd).on('error', function(e)
|
||||||
{
|
{
|
||||||
// originalEvent does NOT exist in IE
|
// originalEvent does NOT always exist in IE
|
||||||
var event = typeof e.originalEvent == 'object' ? e.originalEvent : e;
|
var event = typeof e.originalEvent == 'object' ? e.originalEvent : e;
|
||||||
|
// IE(11) gives a syntaxerror on each pageload pointing to first line of html page (doctype).
|
||||||
|
// As I cant figure out what's wrong there, we are ignoring it for now.
|
||||||
|
if (navigator.userAgent.match(/Trident/i) && typeof event.name == 'undefined' &&
|
||||||
|
Object.prototype.toString.call(event) == '[object ErrorEvent]' &&
|
||||||
|
event.lineno == 1 && event.filename.indexOf('/index.php') != -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
log_on_client('error', [event.message], typeof event.stack != 'undefined' ? event.stack : null);
|
log_on_client('error', [event.message], typeof event.stack != 'undefined' ? event.stack : null);
|
||||||
raise_error();
|
raise_error();
|
||||||
// rethrow error to let browser log and show it in usual way too
|
// rethrow error to let browser log and show it in usual way too
|
||||||
|
Loading…
Reference in New Issue
Block a user