2013-10-14 63 views
0

我有這個文本框。當用戶在文本框中寫入一些Jquery代碼並單擊應用。我希望代碼應用於Html頁面。該代碼正在追加到正文,但生成的點擊功能不起作用。我也嘗試將代碼添加到HEAD,點擊也不這樣工作。它有可能起作用嗎?是否可以動態添加jquery或javascript代碼?

我的HTML代碼

<span id="clickme">Click Me</span> 
    <textarea id="txt"> 
    $('#clickme').click(function(){ 
     alert("clicked"); 
    }); 
    </textarea> 
    <button id="apply">Apply</button> 

我jQuery是

$(document).ready(function(){ 
    $(document).on('click','#apply',function(){ 
    var code=$('#txt').val(); 
    $('body').append('<script type="text/javascript">'+code+'</script>'); 

    }); 
    }); 
+0

恭喜你,你找到eval'的'用例。 – zzzzBov

+0

我不知道eval。如果我想在Jquery中做這件事,你能幫我解決這個問題嗎? – Manish

+0

你的jQuery代碼,它在哪裏?在頁面或單獨的文件中? –

回答

3

作爲一個說明,通常eval被認爲是邪惡。這是因爲當它是這項工作的錯誤工具時,它常常被(ab)使用。但是,在這種情況下,您只需要運行一些不明確的代碼,這意味着您已經直接向用戶提供頁面的控制權。


eval將JavaScript代碼直接作爲字符串進行評估。我們沒有理由去嘗試將其添加到頁面作爲script元素,當你可以簡單地調用:

$(document).on('click', '#apply', function() { 
    try { 
     eval($('#txt').val()); 
    } catch (ex) { 
     //might as well report to the console what went wrong 
     window.console&&console.error(ex.message); 
    } 
}); 
+0

似乎有效:http://jsfiddle.net/isherwood/J4arM/ – isherwood

+2

@isherwood,很好,因爲我沒有測試任何它。 – zzzzBov

+0

謝謝zzzzBov。 – Manish

1

你確定你包括jQuery的本身在你的頁面?我copypasted你的代碼和它的作品http://jsfiddle.net/2R8wX/

(除了我加<body>和分裂</script>

+0

謝謝Serge。有用。 zzzzBov的代碼也可以工作。 – Manish

+1

還應該注意的是,舊版本的jQuery不允許你注入'

  • 11. 添加代碼jQuery的動態
  • 12. 哪裏可以添加需要jQuery文件的JavaScript代碼?
  • 13. 動態添加JavaScript覆蓋HTML頁面視圖(不是代碼)
  • 14. 是否可以使用jQuery添加或更改CSS屬性?
  • 15. 如何優化代碼可以動態添加控件
  • 16. 是否可以添加動畫dgrid行?
  • 17. 是否可以隱藏或加擾/混淆網頁的JavaScript代碼?
  • 18. 可以簡化jQuery代碼,讓我變得更加動態
  • 19. 你可以使用jquery動態地向代碼添加註釋嗎?
  • 20. 是否可以動態添加嵌入的代碼塊到asp.net頁面,類似於如何從代碼動態添加控件?
  • 21. 是否可以使用代碼動態填充Python方法?
  • 22. 是否可以在iphone中插入動態代碼?
  • 23. Dreamweaver源代碼視圖,是否可以添加「標籤」?
  • 24. 是否可以在離子中添加目標c代碼?
  • 25. 是否可以在CSS代碼中添加HTML?
  • 26. 是否可以在此代碼中添加3張照片?
  • 27. 是否可以向GAEUnit添加代碼覆蓋支持?
  • 28. 是否可以將.NET代碼(部分)添加到WordPress網站?
  • 29. 是否有可能通過jQuery動態添加webcontrols?
  • 30. 使用handsontable是否可以爲特定的行或列添加動態CSS類?