2

asp.net c# Web アプリケーションでデータ URI ベース 64 文字列を使用しようとしています。一部のブラウザーのみがこれをサポートしていることを知っているため、実行時に現在のブラウザーが base 64 文字列をサポートしているかどうかを確認する必要があります。

ユーザー要求オブジェクトから、現在のブラウザーを記述する HttpBrowserCapabilitiesWrapper オブジェクトにアクセスできます。

ブラウザがデータURIをサポートしている場合、これに基づいて見つけることは可能ですか? または、このオブジェクトに基づいていない場合、実行時にブラウザがデータ uri をサポートしているかどうかを確認する方法はありますか?

4

3 に答える 3

4

ブラウザがサーバー側でデータURIをサポートしているかどうかを判断することはできません。HttpBrowserCapabilitiesWrapperはその情報を提供しません。IE(<7バージョン)を除く私の知識によると、すべてのブラウザはbase64でエンコードされた文字列をサポートしています。ブラウザ固有のコードを作成したくない場合は、基本的に試行錯誤のアプローチを使用してこのような状況を処理できます。

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

画像が適切にレンダリングされない場合、onabort/onerrorイベントが発生します。

于 2011-07-23T01:05:41.073 に答える
2

ShankarSangoli の回答は、書かれているとおりに機能しない場合があります。たとえば、IE 6 は、onerror 関数が割り当てられる前に、src を読み込んで onerror イベントを発生させようとします。

これを機能させるには、src 値を設定する前に onerror を割り当てる必要があります (マークアップで完全に行うことはできません)。

マークアップ:

<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 でテスト済み。

于 2011-12-22T23:29:05.063 に答える
2

このリンクを見てください。簡単に言うと、データURIを使用して画像をロードしようとします。サイズが間違っている場合は、ブラウザがデータURIをサポートしていないことを意味し、バックアップソリューションにロールバックする必要があります.

お役に立てれば

于 2011-07-21T17:38:34.593 に答える