Ответ 1
Я играл с этим еще немного, и единственным решением, которое я смог придумать, было бы неплохо, если бы вопрос был подобным:
var thinBorder = 1;
var mediumBorder = 3;
var thickBorder = 5;
function getLeftBorderWidth($element) {
var leftBorderWidth = $element.css("borderLeftWidth");
var borderWidth = 0;
switch (leftBorderWidth) {
case "thin":
borderWidth = thinBorder;
break;
case "medium":
borderWidth = mediumBorder;
break;
case "thick":
borderWidth = thickBorder;
break;
default:
borderWidth = Math.round(parseFloat(leftBorderWidth));
break;
}
return borderWidth;
}
function getRightBorderWidth($element) {
var rightBorderWidth = $element.css("borderRightWidth");
var borderWidth = 0;
switch (rightBorderWidth) {
case "thin":
borderWidth = thinBorder;
break;
case "medium":
borderWidth = mediumBorder;
break;
case "thick":
borderWidth = thickBorder;
break;
default:
borderWidth = Math.round(parseFloat(rightBorderWidth));
break;
}
return borderWidth;
}
DEMO
Обратите внимание на Math.round()
и parseFloat()
. Это происходит потому, что IE9 возвращает 0.99px
для thin
вместо 1px
и 4.99px
для thick
вместо 5px
.
Edit
Вы упомянули в комментариях, что IE7 имеет разный размер для тонких, средних и толстых.
Кажется, что они выключены только с помощью .5px, с которыми вам будет трудно справиться, поскольку вам больше всего нужны полные номера.
Мое предложение состояло бы в том, чтобы либо просто игнорировать .5px разницы, и признать наиболее вероятные незаметные недостатки при использовании IE7 и ниже, или если вы преувеличены, чтобы справиться с этим, чтобы скорректировать константы так же, как:
var thinBorder = 1;
var mediumBorder = 3;
var thickBorder = 5;
// Will be -1 if MSIE is not detected in the version string
var IEVersion = navigator.appVersion.indexOf("MSIE");
// Check if it was found then parse the version number. Version 7 will be 17 but you can trim that off with the below.
If(IEVersion > -1){
IEVersion = parseInt(navigator.appVersion.split("MSIE")[1]);
}
// Now you can simply check if you are in an ancient version of IE and adjsut any default values accordingly.
If(IEVersion < 7){
thinBorder = 0.5;
mediumBorder = 3.5;
thickBorder = 4.5;
}
/// rest as normal
Любое из вышеперечисленных решений отнюдь не является решением для копирования-вставки, а просто демонстрацией нескольких способов справиться с этой проблемой. Естественно, все эти помощники будут обернуты отдельными функциями, плагинами или расширениями.
В вашем окончательном решении вам, возможно, еще нужно будет иметь дело с задачами пополнения и округления.
Это должно помочь вам начать работу достаточно хорошо.