我使用eval()在完全重寫div之後執行所有<script>
標記。eval()不執行外部(src = ...)腳本
$("#content").find("script").each(function(){
eval($(this).text());
});
它非常適合內嵌的腳本,但對像腳本沒有影響:
<script src="/path/to/externalScript.js"></script>
怎麼來的?我可以「強制」瀏覽器加載並執行外部腳本嗎?
我使用eval()在完全重寫div之後執行所有<script>
標記。eval()不執行外部(src = ...)腳本
$("#content").find("script").each(function(){
eval($(this).text());
});
它非常適合內嵌的腳本,但對像腳本沒有影響:
<script src="/path/to/externalScript.js"></script>
怎麼來的?我可以「強制」瀏覽器加載並執行外部腳本嗎?
除了使用eval
時出現的非常現實的問題,您正在嘗試eval
0123,這些腳本標記內部,這實際上並不是什麼。
加載<script>
標記時,它會將外部文件作爲資源鏈接到頁面並執行腳本。它不會直接渲染任何東西。
因此,你$(this).text()
將返回''。
如果您想重新加載外部腳本,您需要強制刷新頁面,或者可能會改變您在這些腳本中的方式:例如, jQuery.getScript alternative in native JavaScript
$("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>
您的arent想使用eval了..我被互聯網年前嘗試使用它時,鉸削出來。打開你注射。 – Fallenreaper
是的,我知道,但這是我知道的唯一解決方案。我嘗試在ajax響應後加載腳本 – bildstein
'$(this).text()'包含什麼?由於'script'元素沒有文本內容,因此沒有什麼可能。您希望爲腳本執行Ajax請求,讀取其文本內容,然後調用「eval」。 – Whymarrh