Замените html текст-заполнитель на html-элемент, используя javascript - PullRequest
0 голосов
/ 14 марта 2012

У меня есть сценарий, где у меня на странице есть заполнитель текста, который я заменю после полной загрузки страницы.Моя проблема в том, что текст, который мне нужно заменить, является плагином изображения recaptcha, например:

У меня есть текст loading..., который будет заменен на:

<recaptcha:recaptchacontrol ID='recaptcha' runat='server' PublicKey='kfldsjfh4378qyf43h4eidfhew' PrivateKey='sdflkdsfy908s6dfdsfkj' Theme='clean' />

IНе могу найти способ сделать это, любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 14 марта 2012

нашел ответ в чате:

, так как теги <recaptcha:...> анализируются некоторыми подключаемыми модулями на стороне сервера, они не отображались после записи их в JS на стороне клиента.так что замена работает нормально, но плагин не ...

0 голосов
/ 14 марта 2012

Оберните текст "Загрузка ..." в <span> с уникальным идентификатором, например

<span id="removeme">Loading...</span>

Затем, если вы не хотите много заниматься DOM-фу с помощью этого сложного тега с пространством имен, вы можете сделать следующее:

var removeme = document.getElementById('removeme');
removeme.innerHTML = "<recaptcha:recaptchacontrol ...";
var recaptchaThing = removeme.firstChild;
removeme.removeChild(recaptchaThing);
var parent = removeme.parentNode;
parent.insertBefore(recaptchaThing, removeme);
parent.removeChild(removeme);

Это заменит <span> на элемент <recaptcha:recaptchacontrol>, после того как браузер выяснит, как построить DOM для этого причудливого элемента. Если оказывается, что <recaptcha:recaptchacontrol> нельзя поместить внутри элемента <span>, вместо этого сделайте <div style="display:inline">.

0 голосов
/ 14 марта 2012

Вы можете выполнять любые строковые операции (например, поиск и замена) на document.body.innerHtml:

document.body.innerHtml = document.body.innerHtml.replace(/Loading\.\.\./g,
                                                          "<recaptcha...>");
...