2012-03-14 109 views
0

我有一個場景,我在頁面中有一個佔位符文本,我將在頁面完全加載後替換。 我的問題是,我需要更換文字的ReCaptcha圖像的插件,例如:用html元素替換html的佔位符文本使用javascript

我有文字loading...將被替換爲:

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

我找不到這樣做的方式,任何幫助將不勝感激。

+0

順便說一句,爲什麼你告訴每個人你的*私人*鍵? – nonchip 2012-03-14 15:32:55

+0

這不是我的私鑰,我替換爲虛擬文本(實際上都是鍵):) – 2012-03-14 15:34:11

回答

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'Theme ='clean'/>「); – 2012-03-14 15:33:05

+0

我想你需要使用REGEX,所以試着'/ 123/g'而不是''123「' – nonchip 2012-03-14 15:37:36

+0

奇怪:我嘗試了一個簡單的例子,用一個只包含」123「的」html頁面「,然後運行:' document.body.innerHTML = document.body.innerHTML.replace(「123」,「456」);',它產生了「456」。 – nonchip 2012-03-14 15:40:00

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之後,這將用<recaptcha:recaptchacontrol>元素代替<span>。如果事實證明<recaptcha:recaptchacontrol>不能放置在<span>元素的內部,請改爲<div style="display:inline">

+0

它不能從javascript完成,因爲 2012-03-14 16:01:42

+0

哦,我沒有注意到這一點。我想你有一個ASP.NET後端,這個控件是一個自定義的服務器標籤(不像Facebook使用的自定義客戶端標籤;我不熟悉ReCaptcha插入過程)。 – 2012-03-14 16:14:24