2012-09-27 35 views
0

我試圖讓Ajax的網頁更加有用了其中的一些是含有Java腳本可以在Java腳本以某種方式激活,因爲到目前爲止,我沒有發現任何可能幫我一下吧:活躍的JavaScript被插入的innerHTML

<script> 
    var d=document.getElementById("foo"); 
    d.innerHTML="<script type='text/javascript'>alert('yey');</script>"; 
</script> 

我想要這個提醒我'yey'但它自然沒有任何idias? 請不要j查詢。

+3

完全糟糕的設計,不要那樣做。 – moonwave99

+0

與設計有什麼關係?我想讓編輯小頁面成爲可能,而無需輸入整個腳本... – volchkov

+0

爲什麼你想這樣做。您正在嘗試使用JavaScript插入JavaScript。你爲什麼不簡單地使用'alert('yey');'而不是'd.innerHTML =「....」' –

回答

0

你正在嘗試因爲JavaScript時,頁面加載在機器上的解釋是行不通的,因此,當你插入你的代碼,在首頁的整個劇本已經被通過瀏覽器的JavaScript引擎和解析您在該頁面上插入的代碼被引擎視爲純文本。

的代碼將不會再發送到引擎,直到頁面刷新,但如果真的如此,你插入的JavaScript會dissapear,因爲它是不存在的頁面加載。

你需要做的是使用某種類型的模板/包括您的內容體系。

0

我明白了!

var d=document.getElementById("foo"); 
d.innerHTML="<script type='text/javascript'>alert('yey');</script>"; 

startScrypt(d); 

function startScrypt(obj) {. 
if (!obj) return; 
var children=obj.childNodes; 
for (var i in children) 
    if (children[i]){ 
         if (children[i].tagName=="SCRIPT") { 
          if (!children[i].src || children[i].src=="") 
           window.setTimeout(children[i].innerHTML,0); 
           else {load_scrit_src(children[i].src);} 
         } else startScrypt(children[i]); 
        } 
} 

那麼這是不錯的...謝謝大家。

+1

希望永遠不要瀏覽這樣的設計網站。 – moonwave99

+0

它不是網站...它是CMS的一部分...我永遠不會做這樣一個網站...爲什麼我需要它?從以前的cms加載頁面,而不必通過Ajax重寫它們,這是否使得感覺? – volchkov