给CSDN博客添加代码运行框,兼容FireFox!
来源:互联网 发布:sci影响因子查询数据库 编辑:程序博客网 时间:2024/06/06 00:01
给CSDN博客添加代码运行框,兼容FF
csdn博客后台没有代码运行的功能,而作为前端人员,经常会用它来测试html代码,于是就想在自已的博客中加入这个功能,本来认为这是一件非常简单的事,然而实际做起来的时候却遇到了麻烦,以此作个记录。
谈谈我的改博过程,首先在google上找了一下,搜出一大堆,可很少有几个能兼容FF的。最后我找到杨正祎(阿一)的博客,上面有一段比较好的运行代码(在此先感谢一下),满足了FF的兼容性(只是复制代码功能因为FF本身的安全性问题不能解决外,其它基本上都可以运行了)。本来以为只要将这段JS一放进去就OK,但是...
csdn博客后台文章添加系统中有一个最大的麻烦是你不能在文章的html编写模式中写入一个自定义的ID值,比如你想写自定义的容器id属性,并想给它设置样式,当你添加完成提交文章后,在网页中一查看源码,你会发现你赋于的ID已经不见踪影了。哎...看来他们是给我过滤掉了ID,没了ID,我要想用JS去查找某个容器就遇到麻烦。
算了,另想办法吧,毛主席说过“自已动手,丰衣足食”。咱们来DIY一下。
1.阿一的代码只是针对一个运行框,我想达到的是多个运行框都可以在一个页面中的重复调用。
2.不能用ID给textarea容器,就用getElementsByTagName来获取集合吧,然后从中取出当前正在调用的那一个。
3. 最后修改后的代码就成了下面的样子。先放出全部JS代码,如下面所示:
//本次修改是针对CSDN博客后台文章添加系统,兼容FF的代码运行框功能,FF下的另存为功能不受支持,其它的可以使用 function runCode(num){ var obj=document.getElementsByTagName("textarea"); for(var i=0;i<obj.length;i++){ if(num==i){ var newWin=window.open('',"_blank",''); newWin.document.open('text/html','replace'); newWin.opener=null var testCode=obj[num].value; newWin.document.write(testCode); newWin.document.close(); } } } /*****保存代码为html页面,现阶段只支持IE******/ //firefox不兼容的主要原因就是因为ff不支持execCommand('saveas','','filename'); function saveCode(num){ var obj=document.getElementsByTagName("textarea"); for(var i=0;i<obj.length;i++){ if(num==i){ var newWin=window.open('','_blank','top=10000'); newWin.document.open('text/html','replace'); var testCode=obj[num].value; newWin.document.write(testCode); newWin.document.execCommand('saveas','','code.htm'); newWin.close(); } } } function copyCode(num){ var obj=document.getElementsByTagName("textarea"); for(var i=0;i<obj.length;i++){ if(num==i){ var testCode=obj[num].value; if(copy2Clipboard(testCode)!=false) { alert("生成的代码已经复制到粘贴板,你可以使用Ctrl+V 贴到需要的地方去了哦! "); } } } } copy2Clipboard=function(txt){ if(window.clipboardData){ window.clipboardData.clearData(); window.clipboardData.setData("Text",txt); } else if(navigator.userAgent.indexOf("Opera")!=-1){ window.location=txt; } else if(window.netscape){ try{netscape.security.PrivilegeManager.enablePrivilege( "UniversalXPConnect"); } catch(e){ alert("您的firefox安全限制限制您进行剪贴板操作,请打开’about:config’将signed.applets.codebase_principal_support’设置为true’之后重试"); return false; } var clip=Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if(!clip) return; var trans=Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if(!trans) return; trans.addDataFlavor('text/unicode'); var str=new Object(); var len=new Object(); var str=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); var copytext=txt;str.data=copytext;trans.setTransferData("text/unicode",str,copytext.length*2); var clipid=Components.interfaces.nsIClipboard;if(!clip) return false; clip.setData(trans,null,clipid.kGlobalClipboard); } }
有了js代码,好了,添加文章时还要注意将下面这段结构添加到JS上面去,先添加一个空的textarea容器,然后是三个控制按钮。
<textarea rows="12" cols="75"> 测试内容 </textarea> <div style="clear:both;"> <input onclick="runCode(1)" type="button" value="运行代码" /> <input onclick="copyCode(1)" type="button" value="复制代码" /> <input onclick="saveCode(1)" type="button" value="另存代码" /> </div>
要注意的是:在添加文章时要注意给runCode(1)赋予textarea的序号值,从0开始。
经过上面的处理后,基本上在CSDN博客中就可以运行测试代码了,添加一篇文章试试。祝你好运!
- 给CSDN博客添加代码运行框,兼容FireFox!
- 给CSDN博客添加代码运行框,兼容FF
- 给CSDN博客添加代码运行框,兼容FF
- csdn博客如何添加代码
- 仿csdn代码高亮样式,拷贝兼容chrome、firefox
- 添加到收藏夹的js代码(兼容IE,Firefox)
- CSDN博客不支持FireFox?
- 给CSDN博客侧栏添加搜索功能
- 作为程序员我给csdn博客添加打赏功能
- Firefox打不开csdn的博客!
- 给CSDN博客提个意见--垃圾代码太多了
- elementaryOS 给firefox添加launcher
- 给博客添加天气预报
- CSDN博客添加量子恒道统计代码步骤
- CSDN写博客添加代码两种方法
- CSDN-MARKDOWN写博客的时候添加代码块
- 动态添加表格行-兼容IE firefox
- 兼容firefox添加到收藏夹的脚本
- 块元素和内联元素css中块元素可以同时用float和inline消除ie6下的margin加倍
- Delphi 开发整理
- UML对象关系学习总结
- openCv 图像顺时针、逆时针旋转
- 登陆确认页+数据库。
- 给CSDN博客添加代码运行框,兼容FireFox!
- 无法为数据库 'tempdb' 中的对象分配空间,因为 'PRIMARY' 文件组已满
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- 从无头单链表中删除节点
- 备忘:centos+was6.1关于编码的七七八八
- 计算字符串的相似度
- Linux下卸载vmware
- 基于ExtJs的desktop桌面化框架。(仿京东后台管理系统)
- ajax 验证用户名是否存在