функция replace () не работает в Internet Explorer - PullRequest
1 голос
/ 27 ноября 2011

У меня есть функция замены js для замены текста рядом с двумя переключателями в предварительно установленной форме.

Сценарий выглядит следующим образом.

document.body.innerHTML = document.body.innerHTML.replace(
    "Payment by <b>Moneybookers</b> e-wallet<br>", ""
);
document.body.innerHTML = document.body.innerHTML.replace(
    "Maestro, Visa and other credit/debit cards by <b>Moneybookers</b>",
    "Pago con Diners Club, Mastercard o Visa"
);

Сценарий отлично работает в Chrome и Firefox, однако в Explorer он не выполняется.

Я полагаю, это как-то связано с существованием, / - в тексте, который я заменяю? Когда я использую функцию, чтобы заменить текст на «нет», / - в тексте - он отлично работает в проводнике, однако, например, когда я пытаюсь заменить текст .. - «Maestro, Visa и другие кредитные / дебетовые карты от Moneybookers» это не работает в проводнике .. Я предполагаю, из-за комы и косой черты. Честно говоря, я попробовал все, но просто не могу заставить это работать. Любая помощь будет принята с благодарностью !!

Ответы [ 2 ]

3 голосов
/ 27 ноября 2011

Попробуйте с регулярным выражением:

.replace(/Payment by <b>Moneybookers<\/b> e-wallet<br>/, "")

Если это не сработает, попробуйте сделать его без учета регистра.Internet Explorer может преобразовывать теги в верхний регистр.

.replace(/Payment by <b>Moneybookers<\/b> e-wallet<br>/i, "")

В другой точке замена внутреннего HTML всего тела, вероятно, не очень хорошая идея.Каждый элемент DOM на странице будет уничтожен, новый HTML повторно проанализирован, а затем созданы новые элементы.Возможно, попытайтесь сузить замену до элемента, который на самом деле содержит этот текст.

0 голосов
/ 04 декабря 2014

Недавно я исправил ошибку, которая могла бы помочь.

Если бы заменяемое вами значение было 0 - как значение, а не строка - IE11 добавлял только строку замены вместо фактической ее замены.,

Вот что я работал с:

buf = buf.replace( /%%TOTALAMOUNT%%/gim, "$" + parseFloat( g_UserPurchases[LCV].CurrencyValue.val() ).toFixed(2) );                        

Это напечатано: " %% TOTALAMOUNT %%. 00 "

Я исправил этопроверка:

if( ( g_UserPurchases[LCV].CurrencyValue.val() == 0 ) || ( g_UserPurchases[LCV].CurrencyValue.val() === 0 ) ){
//IE fix: IE did not like the $ character and didn't replace if val = 0
buf = buf.replace( /%%TOTALAMOUNT%%/gim, "&#36;0.00");    }

Обратите внимание: IE11 не заменил знак доллара, $.Поэтому вместо этого я использовал код символа:

&#36;

Надеюсь, это поможет!

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