我目前正在處理一個項目,該項目需要我以用戶鍵入的javascript形式運行字符串。如何在頁面上運行鍵入js
我試着添加一個空的<script>
標籤的html和將字符串(含新類型(加載頁面後,用戶)的JavaScript)這個腳本標籤,但這不起作用。 (因爲腳本標籤內的代碼將在頁面加載後立即運行)。
所以我嘗試了不同的方法。我裹着像這樣的函數內的JS字符串:
function runCode() { userString }
這就是我現在追加到空腳本標籤字符串的樣子:
var code = "function runCode() { "+ userString +" }"
然而這仍然無法正常工作。代碼(userString)在腳本標籤顯示了根據Chrome瀏覽器開發工具,但試圖運行功能將造成以下錯誤:
Uncaught ReferenceError: runCode is not defined
是否有人知道這是如何工作?我做這件事的正確方法是什麼?
一些背景資料:
我工作的項目是使用JS繪製一個在線工具。這裏的目標是使用two.js庫並將其鏈接到修改的textarea。 (codemirror)單擊該按鈕將輸入代碼並使用它來修改屏幕另一半上的two.js畫布。
由於您不必自己設置所有的html,css和js文件,因此您可以將注意力集中在代碼上,這樣可以更容易地使用庫進行繪製。
Note:您可以通過任何有效的js鍵入textarea中的js,那麼警報或甚至jQuery線等簡單的東西都可以正常工作。
執行用戶提供的腳本的方式是'eval(code)'。請注意,這將執行用戶提供的腳本。 –
只需在服務器上使用字符串但echo'「函數runCode(){」+ userString +「}」'在腳本標記中使用'function runCode(){userString}'。 – jcubic
還有一種方法可以用'new Function'來做到這一點。你可以用'eval' [here](http://stackoverflow.com/questions/4599857/are-eval-and-new-function-the-same-thing)找到不同之處 –