проверьте, поддерживает ли браузер данные URI во время выполнения - PullRequest
2 голосов
/ 06 июня 2011

Я хочу использовать строки data uri base 64 в своем веб-приложении asp.net c #.Я знаю, что только некоторые браузеры поддерживают это, поэтому во время выполнения мне нужно будет проверить, поддерживает ли текущий браузер строки base 64.

Из объекта запроса пользователей я могу получить доступ к объекту HttpBrowserCapabilitiesWrapper, который описывает текущий браузер.

Можно ли найти на основе этого, если браузер поддерживает данные URI?Или, если он не основан на этом объекте, можно ли во время выполнения проверить, поддерживает ли браузер данные URI?

Ответы [ 3 ]

4 голосов
/ 23 июля 2011

Вы не можете определить, поддерживает ли браузер данные URI или нет на стороне сервера. HttpBrowserCapabilitiesWrapper не предоставляет эту информацию. Насколько мне известно, кроме IE (версия <7), все браузеры поддерживают строки, закодированные в формате 64. Вы можете в основном использовать метод проб и ошибок, чтобы справиться с такими ситуациями, если не хотите кодировать браузер. </p>

<img src="data:image/gif;base64,..." onabort="function(){this.src='urlWhichWillRenderBinaryData'}" onerror="function(){this.src='urlWhichWillRenderBinaryData'}" />

Событие onabort / onerror будет запущено, если изображение не будет правильно отображено.

2 голосов
/ 23 декабря 2011

Ответ Шанкара Санголи может не работать так, как написано. Например, IE 6 попытается загрузить src и запустить событие onerror до того, как будет назначена ваша функция onerror.

Чтобы это работало, вы должны присвоить onerror до установки значения src (не может быть сделано полностью в разметке):

Markup:

<img data-uri="{data-uri-value}" data-fallback-url="{fallback-url}" class="imageuri" />

JQuery:

$('.imageuri').each(function () {
    this.onabort = this.onerror = function () {
        $(this).attr('src', $(this).attr('data-fallback-url'));
    };
    $(this).attr('src', $(this).attr('data-uri'));
});

Протестировано в IE 6, IE 9 и Chrome 16.

2 голосов
/ 21 июля 2011

посмотрите на эту ссылку , проще говоря, она пытается загрузить изображение, используя данные URI, если размер неправильный, это означает, что ваш браузер не поддерживает данные URI, а затем вы должныоткат к решению для резервного копирования.

Надеюсь, это поможет

...