問題描述
我想在我正在建立的 HTML /JavaScript 應用程式中顯示一個’refresh’ 符號,但是我不想使任何 HTTP 請求載入影像。所有主流瀏覽器如何可靠地執行此操作?
我可以找到最接近的 Unicode 值是:↺(↺) 但箭頭指向錯誤的方式。
有沒有另一個 Unicode 值可以工作?
有沒有 Webdings 字型可以使用? (他們通常不會在 Opera 和 Firefox 中工作。)
有沒有辦法在 JS 中使用由 JavaScript 提供的一個 String 提供的 base64 影像源建立一個影像?
編輯:
這樣做的原因不是開銷。正在建立的應用程式必須是單個 JavaScript 檔案中的 self-contained,而不需要任何其他依賴關係。它是可以新增到任何專案的開發實用程式,而不需要網路。
最佳解決辦法
如果瀏覽器支援從 Base64 字串載入影像資料,可以使用 img 並將其 src 設定為以下格式:
data:[<mediatype>][;base64],<data>
例如:
data:image/gif;base64,R0lGODl...
次佳解決辦法
如果您發現字元↻(↻),即 U + 21BB CLOCKWISE OPEN CIRCLE ARROW,可以滿足您的需求 (其箭頭可能不會像通用重新載入圖示中一樣),那麼您可以使用它相當安全:
<style>
.reload { font-family: Lucida Sans Unicode }
</style>
<span class=reload>↻</span>
Lucida Sans Unicode 字型包含符號,幾乎可以在任何 Windows 系統中使用,您可以發現這些天。根據 MS info,它甚至包括在 Windows 98(和 Windows 95 plus) 中。
可以合理地期望 Windows 以外的系統具有某種字型的符號,並具有知道如何從其中的一些接收的瀏覽器。而 fonts containing it 具有相似的形狀。 (但是,如果符號需要文體的文字匹配,則需要更詳細地研究這種情況,並嘗試確保字型列表中的所有字型,或者“fontstackâÂ它。)
第三種解決辦法
Unicode 字元
至少有兩個 Unicode 字元可以用作重新整理或重新載入圖示:
-
CLOCKWISE GAPPED CIRCLE ARROWU +27F3âŸÅ,
-
CLOCKWISE OPEN CIRCLE ARROWU + 21BB¢Â†Å¥
第一個不會出現在 iOS 7 或 8 或 9 中的 Safari 或 Chrome 中。所以給出了,並給出了 the answer by Paul D. White,我推薦使用第二個,CLOCKWISE OPEN CIRCLE ARROW 。
提示:如果您是 Mac 使用者,請獲取 free-of-cost 應用程式 UnicodeChecker 。您可以按名稱搜尋字元,您可以看到包含該字元的字形的字型列表 (在您的特定 Mac 上) 。
圖示字型
使用可擴充套件的 vector-based 圖示替代常規字元字形建立了一些字型。
第四種辦法
順時針相當於您的 Unicode 字元是↻,↻(雖然,作為評論中的 David C. Bishop 筆記,Chromebook 使用 #27f2,âŸÅ) 。
使用文字字元是一個選項,但 Windows XP 可能不顯示字元 (取決於您使用的字元,以及您顯示的字型) 。 @Jukka K. Korpela notes that this character is included in the Lucida Sans Unicode font, so it should work fine even in Windows XP.
就 Wingdings 字型而言,為了避免 HTTP 請求,您需要確信將要安裝在終端使用者的計算機上的相關字型。我不認為這是一個常見的 cross-platform Wingdings 字型 (我可能完全錯了) 。
您可以從包含使用 JavaScript 的影像的 base64 編碼表示形式的字串建立一個影像。你可以這樣做:
var image = new Image();
image.src = 'data:image/gif;base64,' + BASE64_ENCODED_STRING; // Replace gif with whatever image format it actually is
儘管如此,data-uri 在 Internet Explorer 8 和更早版本中可能無法正常工作,哪些 Windows XP 使用者可能會被卡住。 (而且您不需要 JavaScript,因此您可以使用 src 屬性將<img> 標籤放在頁面中。)
第五種辦法
Unicode 6 字元
「時鐘下降和 UPWARDS 開啟圓圈」(U + 1F503)ǟÂ「ƒ
令人遺憾的字型支援字形不是最好的,所以 「所有主要瀏覽器」 可能是一個伸展…: – /
第六種辦法
你提到 「所有主要的瀏覽器」,所以 let’假設:
-
不是每個人都有 javascript
-
不是每個人都可以嵌入字型 (黑莓等)
-
不是每個人都支援所有的 UNCODE 表示 (Windows XP)
-
不是每個人都支援內聯資料 uri’(IE7-)
那麼留下什麼?我建議一個 HTML1 相容的 IMG 元素,也將在第一次載入後被快取:
<img src="/refresh.gif" alt="refresh">
它將在我知道的每個瀏覽器中工作,除了 LYNX 和其他純 text-based 瀏覽器。但是,他們會顯示”refresh”,所以¢Â¢¢™是罰款。
如果您真的想避免對”modern” 瀏覽器額外的 2bytes 請求,則可以對 IE7-使用條件註釋:
<!--[if lte IE 7]>
<img src="refresh.gif" alt="refresh">
<![endif]-->
其餘的還有這樣的事情:
<img src="data:image/gif;base64,..." alt="refresh">
如果您最新的新功能可以使用 CSS 框陰影 (demo):
.refresh{
border-radius: 0;
display: inline-block;
width: 1px;
height: 1px;
box-shadow: 0px 0px rgba(0,0,0,0),0px 1px rgba(0,0,0,0),0px 2px rgba(0,0,0,0),0px 3px rgba(0,0,0,0),0px 4px rgba(0,0,0,0),0px 5px rgba(0,0,0,0),0px 6px rgba(0,0,0,0),0px 7px rgba(0,0,0,0),0px 8px rgba(0,0,0,0),0px 9px rgba(0,0,0,0),0px 10px rgba(0,0,0,0),0px 11px rgba(0,0,0,0),0px 12px rgba(0,0,0,0),0px 13px rgba(0,0,0,0),0px 14px rgba(0,0,0,0),0px 15px rgba(0,0,0,0),1px 0px rgba(0,0,0,0),1px 1px rgba(0,0,0,0),1px 2px rgba(0,0,0,0),1px 3px rgba(0,0,0,0),1px 4px rgba(0,0,0,0),1px 5px rgba(0,0,0,0),1px 6px rgba(0,0,0,0),1px 7px rgba(0,0,0,0),1px 8px rgba(0,0,0,0),1px 9px rgba(0,0,0,0),1px 10px rgba(0,0,0,0),1px 11px rgba(0,0,0,0),1px 12px rgba(0,0,0,0),1px 13px rgba(0,0,0,0),1px 14px rgba(0,0,0,0),1px 15px rgba(0,0,0,0),2px 0px rgba(0,0,0,0),2px 1px rgba(0,0,0,0),2px 2px rgba(0,0,0,0),2px 3px rgba(0,0,0,0),2px 4px rgba(0,0,0,0),2px 5px rgba(0,0,0,0.06),2px 6px rgba(0,0,0,0.55),2px 7px rgba(0,0,0,0.79),2px 8px rgba(0,0,0,0.86),2px 9px rgba(0,0,0,0.86),2px 10px rgba(0,0,0,0.65),2px 11px rgba(0,0,0,0.31),2px 12px rgba(0,0,0,0),2px 13px rgba(0,0,0,0),2px 14px rgba(0,0,0,0),2px 15px rgba(0,0,0,0),3px 0px rgba(0,0,0,0),3px 1px rgba(0,0,0,0),3px 2px rgba(0,0,0,0),3px 3px rgba(0,0,0,0),3px 4px rgba(0,0,0,0.25),3px 5px rgba(0,0,0,0.83),3px 6px rgba(0,0,0,0.86),3px 7px rgba(0,0,0,0.83),3px 8px rgba(0,0,0,0.69),3px 9px rgba(0,0,0,0.74),3px 10px rgba(0,0,0,0.86),3px 11px rgba(0,0,0,0.86),3px 12px rgba(0,0,0,0.6),3px 13px rgba(0,0,0,0.06),3px 14px rgba(0,0,0,0),3px 15px rgba(0,0,0,0),4px 0px rgba(0,0,0,0),4px 1px rgba(0,0,0,0),4px 2px rgba(0,0,0,0),4px 3px rgba(0,0,0,0.25),4px 4px rgba(0,0,0,0.83),4px 5px rgba(0,0,0,0.83),4px 6px rgba(0,0,0,0.43),4px 7px rgba(0,0,0,0),4px 8px rgba(0,0,0,0),4px 9px rgba(0,0,0,0),4px 10px rgba(0,0,0,0.13),4px 11px rgba(0,0,0,0.69),4px 12px rgba(0,0,0,0.86),4px 13px rgba(0,0,0,0.6),4px 14px rgba(0,0,0,0),4px 15px rgba(0,0,0,0),5px 0px rgba(0,0,0,0),5px 1px rgba(0,0,0,0),5px 2px rgba(0,0,0,0),5px 3px rgba(0,0,0,0.69),5px 4px rgba(0,0,0,0.86),5px 5px rgba(0,0,0,0.25),5px 6px rgba(0,0,0,0),5px 7px rgba(0,0,0,0),5px 8px rgba(0,0,0,0),5px 9px rgba(0,0,0,0),5px 10px rgba(0,0,0,0),5px 11px rgba(0,0,0,0),5px 12px rgba(0,0,0,0.69),5px 13px rgba(0,0,0,0.86),5px 14px rgba(0,0,0,0.25),5px 15px rgba(0,0,0,0),6px 0px rgba(0,0,0,0),6px 1px rgba(0,0,0,0),6px 2px rgba(0,0,0,0.13),6px 3px rgba(0,0,0,0.86),6px 4px rgba(0,0,0,0.6),6px 5px rgba(0,0,0,0),6px 6px rgba(0,0,0,0),6px 7px rgba(0,0,0,0),6px 8px rgba(0,0,0,0),6px 9px rgba(0,0,0,0),6px 10px rgba(0,0,0,0),6px 11px rgba(0,0,0,0),6px 12px rgba(0,0,0,0.13),6px 13px rgba(0,0,0,0.86),6px 14px rgba(0,0,0,0.65),6px 15px rgba(0,0,0,0),7px 0px rgba(0,0,0,0),7px 1px rgba(0,0,0,0),7px 2px rgba(0,0,0,0.43),7px 3px rgba(0,0,0,0.86),7px 4px rgba(0,0,0,0.31),7px 5px rgba(0,0,0,0),7px 6px rgba(0,0,0,0),7px 7px rgba(0,0,0,0),7px 8px rgba(0,0,0,0),7px 9px rgba(0,0,0,0),7px 10px rgba(0,0,0,0),7px 11px rgba(0,0,0,0),7px 12px rgba(0,0,0,0),7px 13px rgba(0,0,0,0.75),7px 14px rgba(0,0,0,0.83),7px 15px rgba(0,0,0,0),8px 0px rgba(0,0,0,0),8px 1px rgba(0,0,0,0.43),8px 2px rgba(0,0,0,0.69),8px 3px rgba(0,0,0,0.86),8px 4px rgba(0,0,0,0.6),8px 5px rgba(0,0,0,0.31),8px 6px rgba(0,0,0,0),8px 7px rgba(0,0,0,0),8px 8px rgba(0,0,0,0),8px 9px rgba(0,0,0,0),8px 10px rgba(0,0,0,0),8px 11px rgba(0,0,0,0),8px 12px rgba(0,0,0,0),8px 13px rgba(0,0,0,0.69),8px 14px rgba(0,0,0,0.86),8px 15px rgba(0,0,0,0),9px 0px rgba(0,0,0,0),9px 1px rgba(0,0,0,0.48),9px 2px rgba(0,0,0,0.86),9px 3px rgba(0,0,0,0.86),9px 4px rgba(0,0,0,0.86),9px 5px rgba(0,0,0,0.13),9px 6px rgba(0,0,0,0),9px 7px rgba(0,0,0,0),9px 8px rgba(0,0,0,0),9px 9px rgba(0,0,0,0),9px 10px rgba(0,0,0,0),9px 11px rgba(0,0,0,0),9px 12px rgba(0,0,0,0),9px 13px rgba(0,0,0,0.75),9px 14px rgba(0,0,0,0.83),9px 15px rgba(0,0,0,0),10px 0px rgba(0,0,0,0),10px 1px rgba(0,0,0,0),10px 2px rgba(0,0,0,0.79),10px 3px rgba(0,0,0,0.86),10px 4px rgba(0,0,0,0.6),10px 5px rgba(0,0,0,0),10px 6px rgba(0,0,0,0),10px 7px rgba(0,0,0,0),10px 8px rgba(0,0,0,0),10px 9px rgba(0,0,0,0),10px 10px rgba(0,0,0,0),10px 11px rgba(0,0,0,0),10px 12px rgba(0,0,0,0.13),10px 13px rgba(0,0,0,0.86),10px 14px rgba(0,0,0,0.65),10px 15px rgba(0,0,0,0),11px 0px rgba(0,0,0,0),11px 1px rgba(0,0,0,0),11px 2px rgba(0,0,0,0.38),11px 3px rgba(0,0,0,0.83),11px 4px rgba(0,0,0,0.06),11px 5px rgba(0,0,0,0),11px 6px rgba(0,0,0,0),11px 7px rgba(0,0,0,0),11px 8px rgba(0,0,0,0),11px 9px rgba(0,0,0,0),11px 10px rgba(0,0,0,0),11px 11px rgba(0,0,0,0),11px 12px rgba(0,0,0,0.69),11px 13px rgba(0,0,0,0.86),11px 14px rgba(0,0,0,0.25),11px 15px rgba(0,0,0,0),12px 0px rgba(0,0,0,0),12px 1px rgba(0,0,0,0),12px 2px rgba(0,0,0,0),12px 3px rgba(0,0,0,0.31),12px 4px rgba(0,0,0,0),12px 5px rgba(0,0,0,0),12px 6px rgba(0,0,0,0.25),12px 7px rgba(0,0,0,0),12px 8px rgba(0,0,0,0),12px 9px rgba(0,0,0,0),12px 10px rgba(0,0,0,0.13),12px 11px rgba(0,0,0,0.69),12px 12px rgba(0,0,0,0.86),12px 13px rgba(0,0,0,0.6),12px 14px rgba(0,0,0,0),12px 15px rgba(0,0,0,0),13px 0px rgba(0,0,0,0),13px 1px rgba(0,0,0,0),13px 2px rgba(0,0,0,0),13px 3px rgba(0,0,0,0),13px 4px rgba(0,0,0,0),13px 5px rgba(0,0,0,0.06),13px 6px rgba(0,0,0,0.83),13px 7px rgba(0,0,0,0.83),13px 8px rgba(0,0,0,0.69),13px 9px rgba(0,0,0,0.75),13px 10px rgba(0,0,0,0.86),13px 11px rgba(0,0,0,0.86),13px 12px rgba(0,0,0,0.6),13px 13px rgba(0,0,0,0.06),13px 14px rgba(0,0,0,0),13px 15px rgba(0,0,0,0),14px 0px rgba(0,0,0,0),14px 1px rgba(0,0,0,0),14px 2px rgba(0,0,0,0),14px 3px rgba(0,0,0,0),14px 4px rgba(0,0,0,0),14px 5px rgba(0,0,0,0.13),14px 6px rgba(0,0,0,0.55),14px 7px rgba(0,0,0,0.79),14px 8px rgba(0,0,0,0.86),14px 9px rgba(0,0,0,0.86),14px 10px rgba(0,0,0,0.65),14px 11px rgba(0,0,0,0.31),14px 12px rgba(0,0,0,0),14px 13px rgba(0,0,0,0),14px 14px rgba(0,0,0,0),14px 15px rgba(0,0,0,0),15px 0px rgba(0,0,0,0),15px 1px rgba(0,0,0,0),15px 2px rgba(0,0,0,0),15px 3px rgba(0,0,0,0),15px 4px rgba(0,0,0,0),15px 5px rgba(0,0,0,0),15px 6px rgba(0,0,0,0),15px 7px rgba(0,0,0,0),15px 8px rgba(0,0,0,0),15px 9px rgba(0,0,0,0),15px 10px rgba(0,0,0,0),15px 11px rgba(0,0,0,0),15px 12px rgba(0,0,0,0),15px 13px rgba(0,0,0,0),15px 14px rgba(0,0,0,0),15px 15px rgba(0,0,0,0);
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。