Я использую gravatar для загрузки аватаров для каждого пользователя, который публикует историю на странице. Я также использую jquery для закругления углов некоторых элементов диапазона на странице. К сожалению, похоже, что захват аватаров из граватара происходит до применения эффектов jquery (без кода граватара элементы сразу округляются), поэтому внешний вид элементов меняется через мгновение после того, как они становятся видимыми на сайте. Есть ли способ обойти это? (Я использую asp.net mvc)
Да, я попробовал страницу без граватара, выглядит нормально. (Углы сразу становятся закругленными)

Похоже, ваш скрипт загрузки граватара выполняется до вызова jQuery, изменяющего внешний вид. Есть ли способ вручную вызвать загрузку граватара? Если это так, вы можете использовать jQuery document.ready, чтобы сначала вызвать ваши косметические изменения, а затем вызвать загрузку граватара. Таким образом, вы не будете ждать, пока закончатся граватары, прежде чем начнутся «более важные» изменения пользовательского интерфейса.
Я полагаю, вы загружаете граватары, используя URL-адреса, а не ajax и т. д. document.ready () будет выполняться при загрузке DOM, не обязательно при загрузке всех изображений (gravatar). В вашем случае вы можете попробовать использовать событие window.onload.
Вот рабочая демонстрация JsFiddle, как получить профиль граватара пользователя с помощью JSONP-вызова API.
$("form").on("submit", function(e) {
e.preventDefault();
$.ajax("http://en.gravatar.com/" + md5($("#email").val()) + ".json", { dataType: "jsonp" })
.done(function(result) {
for(var idx in result.entry)
{
var profile = result.entry[idx];
console.info(profile);
$("#displayName").text(profile.displayName);
$("#avatar").attr("src", profile.thumbnailUrl);
}
}).fail(function(result) { console.info("fail", arguments); });
});
Не уверен, в чем проблема. Есть ли период быстрого повторного рендеринга, который вам не нужен, когда страница завершает загрузку и запускается ваш скрипт? Вы пробовали свою страницу без загрузки граватара?