2016-03-22 94 views
-2

我使用eval()在完全重寫div之後執行所有<script>標記。eval()不執行外部(src = ...)腳本

$("#content").find("script").each(function(){ 
    eval($(this).text()); 
}); 

它非常適合內嵌的腳本,但對像腳本沒有影響:

<script src="/path/to/externalScript.js"></script> 

怎麼來的?我可以「強制」瀏覽器加載並執行外部腳本嗎?

+2

您的arent想使用eval了..我被互聯網年前嘗試使用它時,鉸削出來。打開你注射。 – Fallenreaper

+0

是的,我知道,但這是我知道的唯一解決方案。我嘗試在ajax響應後加載腳本 – bildstein

+1

'$(this).text()'包含什麼?由於'script'元素沒有文本內容,因此沒有什麼可能。您希望爲腳本執行Ajax請求,讀取其文本內容,然後調用「eval」。 – Whymarrh

回答

0

除了使用eval時出現的非常現實的問題,您正在嘗試eval 0123,這些腳本標記內部,這實際上並不是什麼。

加載<script>標記時,它會將外部文件作爲資源鏈接到頁面並執行腳本。它不會直接渲染任何東西。

因此,你$(this).text()將返回''。

如果您想重新加載外部腳本,您需要強制刷新頁面,或者可能會改變您在這些腳本中的方式:例如, jQuery.getScript alternative in native JavaScript

-2

$("body").css("background", "silver"); 
 

 
$("button").click(function() { 
 
    $("script[src^='data:']").each(function() { 
 
    var script = document.createElement('script'); 
 
    script.src = this.src; 
 
    document.body.appendChild(script); 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script src="data:text/javascript,document.body.style.background='red'"></script> 
 
<button>Go</button>

+0

對不起,它不起作用 – bildstein

+0

@bildstein,就像你看到的那樣。 – Qwertiy

相關問題