【问题标题】:suppress Mac Retina @2x calls抑制 Mac Retina @2x 调用
【发布时间】:2016-10-18 07:12:23
【问题描述】:

我有一个使用 SAPUI5 开发的 Web 应用程序。我们正在从后端获取一些图像并在前端显示它们。

我正在对 .net 网络服务进行 ajax 调用。此网络服务返回我在我的网络应用程序中显示的图像的 URL。现在,对于 Mac Retina 设备,浏览器会自动将 @2 添加到图像中。例如。我的图片网址是 https://servername:port/imagepath/default.png。对于视网膜设备,其调用 https:/servername:port/imagepath/default@2.png

我们在服务器端没有任何 default@2.png 图像。我们也不能添加这些图像。问题是它花费大量时间来搜索@2 图像并发送 500 错误。

有什么方法可以禁用此功能并强制浏览器不进行@2 调用?

谢谢, 帕思·贾拉尼

【问题讨论】:

  • 听起来像“SAPUI5”设置。网页通常不会为视网膜显示请求单独的图形,因此这必须是您正在使用的框架的一部分。
  • 请考虑接受以下答案,让其他人知道此问题已解决。只需控制densityAware 属性。

标签: javascript sapui5 retina-display


【解决方案1】:

sap.m.Image 控件会根据显示它的设备自动选择正确的密度。如果某个密度的图像不可用,则图像控件会退回到默认图像,该默认图像也应提供。

例子:

new Image({ // required from "sap/m/Image"
  // ...,
  densityAware: false,
});

来自API reference of sap/m/Image

如果属性densityAwaretrue,则将通过从给定的src 和当前设备的devicePixelRatio 构造格式为[imageName]@[densityValue].[extension] 的密度特定图像名称来加载特定密度图像。唯一支持的密度值是11.52。如果原始 devicePixelRatio 比率不是三个有效数字之一,则会四舍五入到最接近的一个。

如果设置为 true,将发出一个或多个网络请求,尝试获取图像的密度完美版本。

默认情况下,此设置为 false,因此直接加载 src 图像,而不尝试为高密度设备获取密度完美图像。

注意:在 1.60 之前,默认值设置为 true,这为使用默认值但在服务器端不提供密度完美图像版本的应用带来了冗余网络请求。 仅当您还为高密度设备提供相应的图像版本时,才应将此属性设置为 true。

这将帮助您避免不必要的 file@2.png 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-28
    • 2013-01-17
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多