mootools или javascript:что означает $tmp или к чему это относится
-
05-07-2019 - |
Вопрос
В настоящее время я работаю над Tips.js
от mootools
библиотека, и мой код прерывается на строке, в которой есть эти el.$tmp
, а консоль говорит, что оно неопределенно
Кто-нибудь может мне помочь?
Решение
в 1.11 (не проверено в 1.2+) $ tmp - это ссылка на сам элемент, созданный и используемый внутри сборщиком мусора:
var Garbage = {
elements: [],
collect: function(el){
if (!el.$tmp){
Garbage.elements.push(el);
el.$tmp = {'opacity': 1};
}
return el;
},
trash: function(elements){
for (var i = 0, j = elements.length, el; i < j; i++){
if (!(el = elements[i]) || !el.$tmp) continue;
if (el.$events) el.fireEvent('trash').removeEvents();
for (var p in el.$tmp) el.$tmp[p] = null;
for (var d in Element.prototype) el[d] = null;
Garbage.elements[Garbage.elements.indexOf(el)] = null;
el.htmlElement = el.$tmp = el = null;
}
Garbage.elements.remove(null);
},
empty: function(){
Garbage.collect(window);
Garbage.collect(document);
Garbage.trash(Garbage.elements);
}
};
строки el. $ tmp = {'opacity': 1};
(в методе сбора выше) и el.htmlElement = el. $ tmp = el = null;
(в методе trash выше) - это единственные места в источнике, где назначено это свойство, которые я смог найти, хотя он вызывается различными другими методами, такими как Element.setOpacity и Element.getStyle (в частности, только для возврата значения непрозрачности ), а также методы в классе Tips
1.2 может не иметь этой проблемы, но в любом случае надеюсь, что это поможет, и извините, я не мог помочь больше
Другие советы
Я бы предложил взять ваш вопрос и опубликовать его вместе со ссылкой на страницу на / или / и:
http://groups.google.com/group/mootools-users/topics р>
Это сообщество, которое кишит этим.
Теперь, что касается ответа здесь - мне нужно намного больше информации (пример кода?)
Хм.Я не совсем уверен, на что ссылается el.$tmp в MooTools, но сообщение о том, что «консоль не определена», вероятно, связано с тем, что кто-то пытался войти в консоль Firebug (или другую), и этот объект не существует, если вы у меня нет Firebug и друзей.
Если у вас не установлен http://getfirebug.com'>Firebug для Firefox, вы можете попробовать.Посмотрите, сможете ли вы найти оператор консоли и удалить его.Кроме того, если вы не используете Firefox, вы можете использовать Firebug Lite в IE, Safari или Opera.