mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
ENHANCEMENT: In dev mode, include some basic leak detection functions in the admin panel
This commit is contained in:
parent
1085fd29be
commit
21e7ec61f4
@ -268,7 +268,9 @@ class LeftAndMain extends Controller implements PermissionProvider {
|
||||
FRAMEWORK_DIR . '/javascript/GridField.js',
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
if (Director::isDev()) Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/javascript/leaktools.js');
|
||||
|
||||
HTMLEditorField::include_js();
|
||||
|
||||
Requirements::combine_files(
|
||||
|
49
admin/javascript/leaktools.js
Normal file
49
admin/javascript/leaktools.js
Normal file
@ -0,0 +1,49 @@
|
||||
(function($){
|
||||
|
||||
var getHTML = function(el) {
|
||||
var clone = el.cloneNode(true);
|
||||
|
||||
var div = $('<div></div>');
|
||||
div.append(clone);
|
||||
|
||||
return div.html();
|
||||
}
|
||||
|
||||
$.leaktools = {
|
||||
|
||||
logDuplicateElements: function(){
|
||||
var els = $('*');
|
||||
var dirty = false;
|
||||
|
||||
els.each(function(i, a){
|
||||
els.not(a).each(function(j, b){
|
||||
if (getHTML(a) == getHTML(b)) {
|
||||
dirty = true;
|
||||
console.log(a, b);
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
if (!dirty) console.log('No duplicates found');
|
||||
},
|
||||
|
||||
logUncleanedElements: function(clean){
|
||||
$.each($.cache, function(){
|
||||
var source = this.handle && this.handle.elem;
|
||||
if (!source) return;
|
||||
|
||||
var parent = source;
|
||||
while (parent && parent.nodeType == 1) parent = parent.parentNode;
|
||||
|
||||
if (!parent) {
|
||||
console.log('Unattached', source);
|
||||
console.log(this.events);
|
||||
if (clean) $(source).unbind().remove();
|
||||
}
|
||||
else if (parent !== document) console.log('Attached, but to', parent, 'not our document', source);
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
})(jQuery);
|
Loading…
x
Reference in New Issue
Block a user