使用javascript将html占位符文本替换为html元素

时间:2012-03-14 15:17:41

标签: javascript html recaptcha

我有一个场景,我的页面中有一个占位符文本,我将在页面完全加载后替换它。 我的问题是我需要替换的文本是recaptcha图像的插件,例如:

我的文字loading...将被替换为:

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

我找不到办法,任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

在聊天中找到答案:

由于某些服务器端插件解析了<recaptcha:...>标签,因此在客户端JS中编写它们后不会呈现它们。所以替换工作正常,但插件没有......

答案 1 :(得分:0)

您可以在document.body.innerHtml上执行任何字符串操作(例如搜索和替换):

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

答案 2 :(得分:0)

将您的“正在加载...”文字换成<span>,其中包含唯一ID,例如

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

然后,如果您不想使用该复杂的命名空间标记做很多DOM-fu,您可以执行以下操作:

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);

在让浏览器弄清楚如何为这个奇怪的元素构建DOM之后,这会将<span>替换为<recaptcha:recaptchacontrol>元素。如果结果<recaptcha:recaptchacontrol>无法放在<span>元素内,请改为<div style="display:inline">