заменить текстовую функцию, не работающую в проводнике - 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");}onload=x;

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

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

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

То, что возвращает innerHTML, варьируется от одного браузера к другому, потому что в нем нет стандарта (содержание будет таким же, но способ отображения может отличаться). Подобная замена может привести к сбою в некоторых браузерах. Вы должны просто использовать другой подход, чтобы заменить вас.

Лучшим подходом было бы заключить текст, который вы хотите заменить, в span, чтобы вы могли легче ориентироваться на контент, который хотите заменить.

<span id="thatFirstThing">Payment by <b>Moneybookers</b>e-wallet<br></span>

После того, как вы можете сделать

document.getElementById("thatFirstThing").innerHTML = "";

P.S .: Выполнение замены innerHTML на теле также имеет огромный побочный эффект. Так как вы заменяете содержимое своей дырочной страницы. Весь обработчик событий, привязанный к вашей странице, исчезнет.

Редактировать: Если вы не можете изменить HTML-страницу, она немного сложнее, потому что DOM плохо приспособлен для такой вещи. Что вы можете сделать, так это нацелиться на родительский элемент, перемещаясь по DOM с помощью document.getElementById и childNodes. И когда у вас есть родительский элемент, просто напишите новый контент, который вам нужен, без замены.

В конце концов это будет выглядеть примерно так:

 document.getElementById("someSection").childNodes[0].childNodes[1].childNodes[0].innerHTML = "";
1 голос
/ 27 ноября 2011

Не уверен, связано ли это (я пользователь Mac без IE), но вы не должны использовать многострочные строки.Вместо этого используйте \n.

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