2011-09-28 136 views
1

我使用這種腳本以評估在DOM注入我的javascript代碼評估一個jQuery聲明

function wilEval(source) { 

    if ('function' == typeof source) { 
    source = '(' + source + ')();' 
    } 
    var script = document.createElement('script'); 
    script.setAttribute("type", "text/javascript"); 
    script.textContent = source; 
    document.body.appendChild(script); 

    if (window.execScript) { 
     window.execScript(source); 
    } 

} 

它在IE等主流瀏覽器,但我的問題是被評估的代碼是一個像這樣的jQuery代碼$("#<?php echo "utm".$thr_id; ?>").effect("highlight", {}, 1000);那麼如何評估它像一個正常的JavaScript代碼?謝謝

P.S. PHP的回聲只是產生動態元素的id =)

+0

將php內聯代碼動態添加到DOM不會在服務器端執行。當PHP引擎服務器呈現頁面時,當您處於客戶端瀏覽器中時,執行<?php ...代碼就太遲了。 – tonycoupland

回答

2

有一件事你可以做是使用globalEval()

function wilEval(source) { 

    if ('function' == typeof source) { 
    source = '(' + source + ')();' 
    } 


    if (window.execScript) { 
    var script = document.createElement('script'); 
    script.setAttribute("type", "text/javascript"); 
    script.textContent = source; 
    document.body.appendChild(script); 
    window.execScript(source); 
    }else{ 
    jQuery.globalEval(source); 
    } 

} 
+0

我可以使用這個外部的JS文件?無論如何,我將用這個代碼製作的JS文件包含在一個包含jquery文件的html文件中。 –

0

所以,你的代碼是不是一個函數,而是一個statement

然後,把它包這樣的:

(function() { YOUR STATEMENT }()); 
+0

你能舉個例子嗎?如何包裝它?謝謝=) –