我有一个场景,我的页面中有一个占位符文本,我将在页面完全加载后替换它。 我的问题是我需要替换的文本是recaptcha图像的插件,例如:
我的文字loading...
将被替换为:
<recaptcha:recaptchacontrol ID='recaptcha' runat='server' PublicKey='kfldsjfh4378qyf43h4eidfhew' PrivateKey='sdflkdsfy908s6dfdsfkj' Theme='clean' />
我找不到办法,任何帮助都会受到赞赏。
答案 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">
。