2012-02-19 61 views
0

我有一個控制網頁的功能,當存款發生時運行回叫功能。動態運行HTML/Javascript

在後端用戶可以添加腳本,圖像,iframe等,我的程序創建一個與控制存款回調相同的名稱的JavaScript函數,該回調運行用戶輸入到後端的代碼片段(腳本, iframe,html等)。

該函數應運行客戶端輸入到CMS中的所有HTML/Javascript段。我不知道用戶會輸入什麼內容,它可能是腳本或圖像或其他內容。

我無法運行HTML/Javascript的片段。

1)我不能創建一個腳本元素,並將其添加到DOM,因爲它可能是一個圖像或其他東西完全。

2)document.write可以工作,但會清除頁面。

3)我不能使用innerHTML,除了我動態添加的腳本之外,一切工作都正常。

4)我不能使用textNode,因爲當我將它們添加到DOM時它不運行腳本。

每次我動態地添加它,我得到的實際代碼打印到字符串,而不是代碼運行。

任何人都可以幫忙嗎?

謝謝。

p.s.

下面是一些HTML的一個例子,如果我能得到這個工作,其中trackingCode可能是一個圖像或腳本,那麼這就是我的回答:

<head> 

<script type='text/javascript'> 

function test(pixelData){ 

var body= document.getElementsByTagName('body')[0]; 

var trackingCode = '&lt;script type=\'text/javascript\'&gt;alert(\'[hi]\');&lt;/script&gt;'; 

var div = document.createElement('div') 

trackingCode = trackingCode.replace(/&gt;/g,'>').replace(/&lt;/g,'<'); 
div.innerText = trackingCode; 

document.documentElement.firstChild.appendChild(div); 

body.appendChild(div); 


} 

</script> 

</head> 
<body> 
<script type="text/javascript"> 
test(); 
</script> 
<div id='whatever'> 

</div> 
</body> 

回答

0

不知道有什麼用innerHTML的問題,做你看到你鍵入的腳本顯示爲文本還是被忽略?

嘗試在粘貼到元素中之前使用code = escape(code)。

+0

腳本顯示爲文本。當我逃脫了JavaScript字符串時,它將其粘貼爲編碼文本,但沒有運行它。 – Eitan 2012-02-19 12:23:36