Несоответствие в массиве разделения строк приводит к IE 11 - PullRequest
0 голосов
/ 04 июля 2018

Примечание. Проблема, о которой я здесь упоминаю, возникает только в IE (я использовал IE 11). Он работает нормально, как и ожидалось во всех других браузерах

Описание проблемы: Я использую метод разделения строк, чтобы разделить строку с помощью разделителя. В моем случае разделителем является "/".

Раскол работал как ожидалось. Однако, когда я беру значения из массива результатов для некоторого сравнения, это дало мне странные результаты. Я упомянул результаты, которые я получаю в комментариях для каждой строки. Может кто-нибудь сказать мне, как решить эту проблему ..

var d = new Date(9999, 11, 31);
var sDateString = d.toLocaleDateString();//RETURNED "12/31/9999"
var aResult = sDateString.split("/");
console.log(aResult);//THIS GAVE THE RESULT ["‎12‎", "‎31‎", "‎9999"]
console.log(aResult[0]);//THIS GAVE THE RESULT 12. THIS IS AS EXPECTED
console.log(aResult[0]=="12");//RESULT IS false!!. MY EXPECTATION WAS ture HERE
console.log(aResult[0]==="12");//RESULT IS false!!. MY EXPECTATION WAS ture HERE
console.log(parseInt(aResult[0].trim()));//RESULT IS NaN!!. I EXPECTED NUMBER 12

С уважением,

Фахад Хамса

1 Ответ

0 голосов
/ 04 июля 2018

По какой-то причине IE11 добавляет \u200e символов - что составляет Unicode Character 'LEFT-TO-RIGHT MARK' - см. это

так

var sDateString = d.toLocaleDateString();

приводит к sDateString, являющемуся *12*/*31*/*9999 - где * равно \u200e

самое простое исправление

var sDateString = (new Date()).toLocaleDateString().replace(/\u200e/g, '');

это не ломает реальные браузеры, но это должно исправить глупые: p

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...