2013-07-27 46 views
0

我想打印或回顯代碼給用戶,但是當我嘗試出現ILLEGAL錯誤時。我怎麼會去呈現以下代碼只是正常的文本,而不是執行它:將用戶代碼打印回用戶

alert('<script>hello</script>');

我一直在試圖將它打印到使用jQuery的文本框,當我得到的錯誤,就像這樣:

$('.printed-code').val('<script> write your code between these lines </script>');

+0

http://jsfiddle.net/WgxrW/1 –

+0

只是出於好奇:你爲什麼需要這個?這似乎是一件尷尬的事情要做。如果是用於調試,有更好的方法:)我不明白爲什麼真的有必要顯示腳本標籤(它們導致問題)。如果它是您想要顯示的代碼塊,請使用'pre'標籤並顯示代碼。 – nathanvda

+0

我正在寫一個WordPress插件,用戶可以選擇選項和輸入東西,然後生成一組代碼,然後可以在主題和模板中使用 – EHerman

回答

3

如果你把你的JavaScript在<script>元素,然後將字符串字面量在</script>將被確認爲腳本匹配的結束標記。分手轉義序列的字符串(在一個JS字符串文字,\/的含義一樣/):

$('.printed-code').val('<script> write your code between these lines <\/script>'); 

...或保持腳本在外部文件中,並與<script src="foo.js"></script>引用它。


如果你想顯示信息給用戶,那麼你不應該使用<input>這樣做,所以你會希望在text()方法,而不是val()方法。 (假設.printed-code匹配<code>元素或適合當前任務的其他內容)。

$('code.printed-code').text('<script> write your code between these lines </script>'); 
+0

偉大的答案,正是我一直在尋找的! '('<\script>在這兩行之間寫下你的代碼<\/script>');' – EHerman

-2

script標記正在被逐字解釋。

嘗試:

alert('&lt;script&gt;hello&lt;/script&gt;') 
+0

'alert'不會將HTML實體轉換爲文本,它們是原樣的。不是我倒下了。 – Teemu

+0

@Teemu好點 – Brandon

1

你應該逃避/這樣的:<\/script>。否則,你會得到錯誤,特別是在舊的瀏覽器</結束腳本塊(而不是</script>

0

有人回答了一個確切的代碼示例,幷包括一個jsfiddle。他由於某種原因刪除了該帖子,但這是他提供的代碼。我會將其標記爲正確的。謝謝大家的輸入

$('.printed-code').val('<scr'+'ipt> write your code between these lines </scr'+'ipt>'); 
+0

不要那樣做。分解開始標記是不必要的,並且使用字符串連接來分解結束標記,這樣做是混亂和低效的。 – Quentin

+0

爲什麼在第一個地方包含'