मैं आईई 7 और कुछ jQuery संवाद के साथ काम कर रहा हूं और मैं प्रति डायलॉग के बारे में 6 मेगापिक्सल रिसाव में भाग रहा हूं। मुझे लगता है कि यह बंद होने के साथ है, लेकिन अब तक जो कुछ भी मैंने उन्हें हटाने के लिए किया है, उसकी मदद नहीं हुई है। इस बिंदु पर मुझे लगता है कि मैंने पास किए गए कॉलबैक फ़ंक्शन को छोड़कर सभी बंदियों का ख्याल रखा है, लेकिन संवाद बंद होने और हटाने के बाद भी यह 6 मेगापिक्सल लीक कर रहा है। प्रासंगिक स्रोत कोड है:jQuery-UI संवाद मेमोरी लीक
function DialogDestroyAndRemove(event) {
$(event.target).dialog("destroy").remove();
}
function CallbackAndCloseDialog(event) {
if (event.data.callback != undefined) {
event.data.callback(event.data.callbackResponse);
}
$("#" + event.data.dialogId).unbind('dialogbeforeclose').dialog('close');
}
// alert dialog modal with ok button
function AlertDialog(dialogTitle, dialogText, callbackFunction) {
// dynamically generate and add a div so we can create the pop-up
$('body').append("<div id=\"alertDialog\" style=\"display:none;\" title=\"" + dialogTitle + "\">" + dialogText + "</div>");
// define/configure the modal pop-up
$("#alertDialog").dialog({
draggable: false,
resizable: false,
modal: true,
autoOpen: true,
open: function() {
$("#alertDialog").parents('.ui-dialog-buttonpane button:eq(0)')
.focus() //focus so the button is highlighted by default
.bind('click', {
callback: callbackFunction,
callbackResponse: 'OK',
dialogId: 'alertDialog'
}, CallbackAndCloseDialog);
},
overlay: { backgroundColor: '#000', opacity: 0.5 },
buttons: { 'OK': function() { } }
}).bind('dialogbeforeclose', function(event, ui) {
// Close (X) button was clicked; NOT the OK button
if (callbackFunction != undefined) {
callbackFunction('cancel');
}
callbackFunction = null;
}).bind('dialogclose', DialogDestroyAndRemove);
}
एक बात मैं ऊपर किया है कि मुझे यकीन है कि अगर यह ठीक बटन के लिए कॉलबैक को परिभाषित जब यह निर्धारित किया है (और इसलिए एक बंद होने के बाद से यह संदर्भित है के बजाय था आवश्यक है नहीं कर रहा हूँ कॉलबैक) संवाद खोलने के बाद इसे एकबिंद का उपयोग करके परिभाषित करने के लिए। मैं उम्मीद कर रहा था कि क्लिक ईवेंट में डेटा के हिस्से के रूप में कॉलबैक पास करने में सक्षम होने से बंद होने में मदद मिल सकती है।
कोई भी विचार मैं इस रिसाव से छुटकारा पाने के लिए और क्या बदल सकता हूं?
यह करना है कि आईई कैसे पीएनजी पारदर्शिता को नियंत्रित करता है, जो ... बहुत ही है। यदि आप किसी छवि के बजाय एक साधारण रंगीन आईई फ़िल्टर के साथ जाते हैं, तो आप मेमोरी हिट के बिना कुछ प्रभाव प्राप्त कर सकते हैं। आपके jQuery.UI.css में '.ui-widget-overlay' वर्ग को बदलें और 'url (' पृष्ठभूमि में आगे बढ़ें:' घोषणा से हरथा को हटा दें, इसके परिणामस्वरूप एक रंग का पारदर्शी ओवरले होगा। –
के साथ होने वाला लगता है आईई सामान्य रूप से पारदर्शिता के साथ कैसे काम करता है। मैंने पृष्ठभूमि के यूआरएल पहलू को हटा दिया (केवल ठोस रंग छोड़कर) और यह अभी भी किया। यह तब तक नहीं था जब तक कि मैं अस्पष्टता फ़िल्टर को हटा नहीं देता। – Parrots
वास्तव में मोडल को हटा रहा है: सत्य मेरे संवाद से आधा 8 मेमोरी उपयोग आधे में (150 एमबी से 70 तक)। – daschl