A disgusting hack for a disgusting browser

Edge randomly fails to rasterize SVG on page load
A different SVG must be loaded so a new image can be rasterized
pull/5077/head
Thibault Duplessis 2019-05-08 09:08:55 +07:00
parent 9aa71fa059
commit f880264161
17 changed files with 203 additions and 0 deletions

View File

@ -32,6 +32,7 @@ types = {
roles = ['pawn', 'knight', 'bishop', 'rook', 'queen', 'king']
colors = ['white', 'black']
# inline SVG
themes.map { |theme|
name = theme[0]
ext = theme[1]
@ -49,3 +50,17 @@ themes.map { |theme|
}.flatten
File.open(dest_dir + name + '.css', 'w') { |f| f.puts classes.join("\n") }
}
# external SVG
themes.map { |theme|
name = theme[0]
ext = theme[1]
classes = colors.map { |color|
roles.map { |role|
piece = color[0] + (role == 'knight' ? 'N' : role.upcase[0])
'.is2d .' + role + '.' + color + ' {' +
"background-image:url('/assets/piece/" + name + "/" + piece + "." + ext + "')}"
}
}.flatten
File.open(dest_dir + name + '.external.css', 'w') { |f| f.puts classes.join("\n") }
}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/alpha/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/alpha/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/alpha/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/alpha/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/alpha/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/alpha/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/alpha/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/alpha/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/alpha/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/alpha/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/alpha/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/alpha/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/cburnett/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/cburnett/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/cburnett/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/cburnett/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/cburnett/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/cburnett/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/cburnett/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/cburnett/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/cburnett/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/cburnett/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/cburnett/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/cburnett/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/chess7/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/chess7/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/chess7/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/chess7/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/chess7/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/chess7/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/chess7/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/chess7/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/chess7/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/chess7/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/chess7/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/chess7/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/chessnut/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/chessnut/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/chessnut/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/chessnut/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/chessnut/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/chessnut/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/chessnut/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/chessnut/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/chessnut/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/chessnut/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/chessnut/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/chessnut/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/companion/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/companion/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/companion/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/companion/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/companion/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/companion/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/companion/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/companion/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/companion/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/companion/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/companion/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/companion/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/fantasy/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/fantasy/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/fantasy/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/fantasy/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/fantasy/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/fantasy/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/fantasy/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/fantasy/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/fantasy/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/fantasy/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/fantasy/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/fantasy/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/kosal/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/kosal/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/kosal/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/kosal/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/kosal/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/kosal/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/kosal/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/kosal/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/kosal/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/kosal/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/kosal/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/kosal/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/leipzig/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/leipzig/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/leipzig/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/leipzig/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/leipzig/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/leipzig/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/leipzig/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/leipzig/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/leipzig/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/leipzig/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/leipzig/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/leipzig/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/letter/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/letter/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/letter/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/letter/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/letter/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/letter/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/letter/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/letter/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/letter/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/letter/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/letter/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/letter/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/merida/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/merida/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/merida/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/merida/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/merida/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/merida/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/merida/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/merida/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/merida/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/merida/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/merida/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/merida/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/pirouetti/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/pirouetti/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/pirouetti/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/pirouetti/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/pirouetti/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/pirouetti/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/pirouetti/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/pirouetti/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/pirouetti/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/pirouetti/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/pirouetti/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/pirouetti/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/reillycraig/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/reillycraig/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/reillycraig/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/reillycraig/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/reillycraig/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/reillycraig/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/reillycraig/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/reillycraig/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/reillycraig/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/reillycraig/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/reillycraig/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/reillycraig/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/riohacha/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/riohacha/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/riohacha/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/riohacha/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/riohacha/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/riohacha/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/riohacha/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/riohacha/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/riohacha/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/riohacha/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/riohacha/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/riohacha/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/shapes/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/shapes/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/shapes/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/shapes/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/shapes/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/shapes/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/shapes/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/shapes/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/shapes/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/shapes/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/shapes/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/shapes/bK.svg')}

View File

@ -0,0 +1,12 @@
.is2d .pawn.white {background-image:url('/assets/piece/spatial/wP.svg')}
.is2d .knight.white {background-image:url('/assets/piece/spatial/wN.svg')}
.is2d .bishop.white {background-image:url('/assets/piece/spatial/wB.svg')}
.is2d .rook.white {background-image:url('/assets/piece/spatial/wR.svg')}
.is2d .queen.white {background-image:url('/assets/piece/spatial/wQ.svg')}
.is2d .king.white {background-image:url('/assets/piece/spatial/wK.svg')}
.is2d .pawn.black {background-image:url('/assets/piece/spatial/bP.svg')}
.is2d .knight.black {background-image:url('/assets/piece/spatial/bN.svg')}
.is2d .bishop.black {background-image:url('/assets/piece/spatial/bB.svg')}
.is2d .rook.black {background-image:url('/assets/piece/spatial/bR.svg')}
.is2d .queen.black {background-image:url('/assets/piece/spatial/bQ.svg')}
.is2d .king.black {background-image:url('/assets/piece/spatial/bK.svg')}

View File

@ -517,6 +517,14 @@
$.get(lichess.assetUrl('oops/browser.html'), html => $('body').prepend(html))
}, 3000);
/* A disgusting hack for a disgusting browser
* Edge randomly fails to rasterize SVG on page load
* A different SVG must be loaded so a new image can be rasterized */
if (navigator.userAgent.indexOf('Edge/') > -1) setTimeout(function() {
const sprite = $('#piece-sprite');
sprite.attr('href', sprite.attr('href').replace('.css', '.external.css'));
}, 1000);
if (window.Fingerprint2) setTimeout(function() {
var t = Date.now()
new Fingerprint2({