在Z-Blog中運行代碼[html][/html](純JS版)
2024-09-06 12:42:49
供稿:網友
昨天的《利用th,colgroup,col定義表格樣式》中,細心點的朋友會發現加了一個“運行代碼”的鏈接:直接點擊可以運行Textarea中的內容。其實本身藍色理想、51JS上也有相關介紹,Z-Blog官方論壇上也有類似帖子,因為自己不太喜歡改asp的內容(將來升級省得替換),所以偷了個小懶,做了一個純JS版本的。
是否兼容FireFox,還沒來得及測試。自己覺得“另存為”和“復制”功能也比較多余,這里也省略掉了。如果需要Fix Bug或者技術支持,歡迎給我留言^_^ 具體代碼如下:
代碼如下:
function RunCode() {
var ele = document.getElementsByTagName("textarea");
for (var i=0; i<ele.length; i++) {
with (ele[i]) {
if (className != "code") continue;
var o = document.createElement("p");
var a = document.createElement("a");
var em = document.createElement("em");
o.className = "runCode";
a.href = "javascript:;";
a.innerHTML = "運行代碼";
a.onclick = function() {
var win = window.open('', "_blank", '');
win.document.open('text/html', 'replace');
win.document.writeln(this.parentNode.previousSibling.value.replace(//u00a0/gi, " "));
win.document.close();
}
em.innerHTML = "(提示:您可以先修改部分代碼再運行)";
o.appendChild(a);
o.appendChild(em);
insertAdjacentElement("afterEnd",o);
}
}
}
目前“運行代碼”功能是放在Textarea下方的,如果想放在上方,改動以下代碼即可。
insertAdjacentElement("afterEnd",o);
this.parentNode.previousSibling.value
其中的replace(//u00a0/gi, " ")主要是為了將被c_function.asp文件替換的空格( )和Tab( )還原回來。使用方面當然是在所需頁面onload進來即可,有多少個className為code的Textarea,就有多少個“運行代碼”功能,夠簡單吧?