2012-03-14 2 views
0

У меня есть сценарий, где у меня есть на моей странице текст-заполнитель, который я буду заменять после полной загрузки страницы. Моя проблема заключается в том, что текст, мне нужно заменить плагин на ReCaptcha изображения, например:Заменить html текст заполнителя элементом html с помощью javascript

Я текст loading... который будет заменен:

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

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

+0

Кстати, почему вы говорите всем своим * частным * ключом? – nonchip

+0

Это не мой личный ключ, я заменил фиктивным текстом (оба ключа на самом деле) :) –

ответ

1

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

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

0

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

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

Я пытаюсь это, но не работает: document.body.innerHTML = document.body.innerHTML.replace ("123", "< recaptcha: recaptchacontrol ID = 'recaptcha' runat = 'server' PublicKey = 'kfldsjfh4378qyf43h4eidfhew' PrivateKey = 'sdflkdsfy908s6dfdsfkj' Тема = 'clean' /> "); –

+0

Я думаю, вам нужно использовать REGEX, поэтому попробуйте '/ 123/g' вместо' "123" ' – nonchip

+0

странно: я попробовал простой пример, используя« html-страницу », содержащую только« 123 », а затем запустив:' document.body.innerHTML = document.body.innerHTML.replace ("123", "456"); ', который произвел« 456 ». – nonchip

0

Оберните «Loading ...» текст в <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

Невозможно сделать это с javascript, так как

+0

О, я этого не заметил. Я предполагаю, что у вас есть бэкэнд ASP.NET, и этот элемент управления является настраиваемым тегом сервера (а не пользовательским тегом клиента, например Facebook, я не так хорошо знаком с процессом вставки ReCaptcha). –

 Смежные вопросы

  • Нет связанных вопросов^_^