Как Greg упоминает, компиляторы не сделают этого в режиме отладки. Для сборок отладки нормально быть медленнее, чем сборка напоминания, но они не должны отказывать чаще: и если Вы зависите от оптимизации последнего вызова, они могут сделать точно это. Из-за этого часто лучше переписать последний вызов как нормальный цикл.:-(
Я бы оставил свойство title в покое для целей доступности и изменил slimbox.js так, чтобы он считывал атрибут title сразу при загрузке страницы, сохранял его в настраиваемом свойстве (называемом «заголовок» или что-то в этом роде) , и они программно удаляют атрибут title, чтобы предотвратить появление всплывающей подсказки. Конечно, это означает, что остальную часть кода, который ссылается на свойство title, необходимо изменить, чтобы использовать настраиваемое свойство.
Вы можете использовать параметр linkMapper , чтобы настроить отображаемый заголовок.
Если вы используете сжатый файл slimbox2.js, у вас будет код автозагрузки, чтобы вы могли изменить его, чтобы делать то, что объяснил Джош Стодола:
// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
jQuery(function($) {
$("a[rel^='lightbox']").each(function(){
//Set caption and remove title attributes
this.caption = this.title;
}).slimbox({/* Put custom options here */}, function(el){
//Custom linkMapper to grab the description from the caption attribute
return return [el.href, el.caption];
}), function(el) {
return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
});
});
Вам нужен небуферизованный вывод всякий раз, когда вы хотите убедиться, что вывод был записан, прежде чем продолжить. Одним из примеров является стандартная ошибка библиотеки времени выполнения C - обычно она не буферизуется по умолчанию. Поскольку ошибки (будем надеяться) нечасты, вы захотите узнать о них немедленно. С другой стороны, стандартный вывод буферизирован просто потому, что предполагается, что через него будет проходить гораздо больше данных.
Другой пример - библиотека регистрации. Если ваши сообщения журнала хранятся в буферах вашего процесса, и ваш процесс выгружает ядро, есть очень большая вероятность, что вывод никогда не будет записан.
Кроме того, минимизируются не только системные вызовы, но и дисковый ввод-вывод как хорошо. Скажем, программа читает файл по одному байту за раз. С небуферизованным вводом, чтобы определить соответствующий атрибут, используйте getAttribute узла 'el', переданного функции
, замените вызов по умолчанию "jQuery (function ($)" в вашем файле slimbox .js этим
jQuery(function($) {
$("a[rel^='lightbox']").slimbox({ /* Put custom options here */ }, function(el) {
return [el.href, el.getAttribute("slimboxcaption")];
}, function(el) {
return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
});
});
, тогда вы можете использовать это для передать любое HTML-содержимое в поле, скрывая его от пользователя, наведенного на ссылку
<a href="/myimage.jpg" title="This is my image" slimboxcaption='<h2>Here you can enter html code for your box caption</h2>...' rel="lightbox"><img src="/myimage_small.jpg"/></a>