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',
|
FRAMEWORK_DIR . '/javascript/GridField.js',
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (Director::isDev()) Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/javascript/leaktools.js');
|
||||||
|
|
||||||
HTMLEditorField::include_js();
|
HTMLEditorField::include_js();
|
||||||
|
|
||||||
Requirements::combine_files(
|
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