我正在尋找在我的asp.net c#web應用程序中使用數據uri base 64字符串。我知道只有一些瀏覽器支持這個,所以在運行時我需要檢查當前瀏覽器是否支持base 64字符串。檢查瀏覽器是否支持運行時的數據uri
從用戶請求對象中,我可以訪問描述當前瀏覽器的HttpBrowserCapabilitiesWrapper對象。
如果瀏覽器支持數據uri的話,基於此可以找到嗎?或者如果不是基於這個對象,有什麼辦法可以在運行時檢查瀏覽器是否支持數據uri?
我正在尋找在我的asp.net c#web應用程序中使用數據uri base 64字符串。我知道只有一些瀏覽器支持這個,所以在運行時我需要檢查當前瀏覽器是否支持base 64字符串。檢查瀏覽器是否支持運行時的數據uri
從用戶請求對象中,我可以訪問描述當前瀏覽器的HttpBrowserCapabilitiesWrapper對象。
如果瀏覽器支持數據uri的話,基於此可以找到嗎?或者如果不是基於這個對象,有什麼辦法可以在運行時檢查瀏覽器是否支持數據uri?
看一看this link,說得簡單一點,它會嘗試使用數據uri加載圖像,如果大小錯誤,這意味着您的瀏覽器不支持數據uri,然後您必須回滾到備份解決方案。
希望這有助於
您無法確定瀏覽器是否支持數據URI或沒有在服務器端。 HttpBrowserCapabilitiesWrapper不提供該信息。據我所知,除IE(< 7版本)外,所有的瀏覽器都支持base 64編碼的字符串。如果您不想針對特定的瀏覽器編寫代碼,您基本上可以使用試驗和錯誤的方法來處理這種情況。
<img src="data:image/gif;base64,..." onabort="function(){this.src='urlWhichWillRenderBinaryData'}" onerror="function(){this.src='urlWhichWillRenderBinaryData'}" />
如果圖像渲染不正確,onabort/onerror事件將被觸發。
onerror似乎更可靠。 – vvo 2012-05-18 15:23:06
ShankarSangoli's answer可能無法正常工作。例如,IE 6會嘗試加載src並在分配onerror函數之前觸發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.
你也不能依賴瀏覽器的名字,因爲如果它有插件,可以啓用/禁用該功能 – 2016-08-23 09:38:27