JS 简易控制台插件 [供 博客, 论坛 运行js用]

今天厚着脸皮来推荐下鄙人写的一个小插件吧。
看过我博客的应该都熟悉这个插件了,其实就是这货。

这东西是我去年写的,当时水平也不怎么样,不过好歹还是实现了简单功能。
我先简单介绍下这东西什么用吧。

因为在 论坛,博客 里写东西的时候,非常希望有个运行功能,当然目前大部分的功能都是 open 实现的。
而且在 IE6-7 下没有 console 可供调试,所以当时脑子一热就写了这东西。
可能你会说 Firebug Lite 不是很方便么,而且兼容 IE6 呢。。
确实,不过我的出发点不一样,只是写一个可供输出 console 结果的小插件。

目前已经在落叶兄弟的论坛里经历了一年的洗礼,出现过各种奇葩BUG,同时也让我学到了很多。
让我印象比较深的BUG之一就是不能用正则处理结果。

因为用户调试正则时 RegExp.$1, RegExp.$_ 之类的会有值存在。
如果插件处理结果的时候也用正则处理,就会覆盖这些结果。

举个例子简单说明

"aaaa123aaa".match(/(\d+)/);
console.log( RegExp.$1 ); // 123

点击右上角运行看看效果吧。
如果我在处理结果的时候也用正则了,这里的 $1 就被覆盖,或者丢失了。
类似这样的问题还有很多,真心学到了不少呢。

好了不扯了,继续说插件吧。
大家可以去我的 [email protected] 下载《简易控制台插件

插件很小,min后4.58KB,纯js写的不依然任何库,兼容 现代浏览器 和 IE6-11。
PS: 我的博客由于语法高亮插件的缘故,所以不支持IE6-8,要测试 IE6-11 的朋友可以去落叶兄弟的论坛看看。

调用方法

请将该文件调用写到 body 标签内,写在头部会出错,因为没有写 dom ready 检测。
也不要异步调用他,因为脚本有一个根据参数判定是否劫持 console 的过程。

所以为了简单安全,直接在 <body> 内调用即可。

<script type="text/javascript" src="Simple-Console.min.js"></script>

如果是在 IE6-7 调试的时候用,建议开启劫持模式。

<script type="text/javascript" src="Simple-Console.min.js?rep"></script>

全局方法

为了方便在 博客, 论坛 等地方使用,脚本特意提供了一个 runjs 方法。

runjs(‘alert("test.")‘);
runjs(‘console.log("test.")‘);
runjs(‘console.dir({key: "val"})‘);

console调试接口

水平有限,只提供几个简单常用的接口给大家。

alert(str); //显示信息
console.log(arg1 [,arg2 ...]); // 可显示多个参数的信息
console.dir(obj); // 如果是对象,展开显示
console.time(str); // 测试代码运行时间
console.timeEnd(str); // 测试代码运行时间
console.error(str); // 输出错误信息 (其实是提供给插件本身用的)
console.clear(); // 清空显示 (其实是提供给插件本身用的)

目前就这些,基本用法和原生的一样,只是功能没原生的强。。
PS:关于 time, timeEnd 的用法可以参考下 《浅谈 == 与 === 的性能问题》 或者看谷歌官方文档。

接下来说说怎么在你的博客或者论坛里调用这个插件吧。

var runit = {
    js: function (code, istry) { // 运行js,istry 是否捕获运行时错误
        runjs(code, istry);
    },
    html: function (code) { // 运行 html
        var newwin = window.open(‘‘, "_blank", ‘‘);
        newwin.document.open(‘text/html‘, ‘replace‘);
        newwin.opener = null;
        newwin.document.write(code);
        newwin.document.close();
    }
}

这个是我目前线上用的代码,非常简单。

在你的语法高亮上加上一个运行按钮,然后绑定事件即可。
例如这样:

$(".codeBox").on("click", ‘.cb-run‘,  function() {
    var className = this.className,
        runType = className.indexOf(‘html‘) > -1 ? "html" : "js",
        istry = ~className.indexOf("notry"),
        code = $(this).partnet().find("pre").text(); // 获取pre内的代码文本
        // 或者这样
        // var code = $(this).partnet().data("code"); // 高亮时绑定的源码,比每次 text 获取效率高。
    runit[runType](code, istry); // 运行代码
});

这个差不多就是我的博客运行功能的核心思路了。
当然我还做了一些其他处理,因为我用的语法高亮插件仅仅是高亮功能,那些按钮什么的全是我自己加上的。

好了,今天的分享差不多就这些了,如果在使用中有什么不懂的,或者遇到BUG了,可以留言,我会及时处理的。

JS 简易控制台插件 [供 博客, 论坛 运行js用]

时间: 2024-10-10 09:06:57

JS 简易控制台插件 [供 博客, 论坛 运行js用]的相关文章

将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)

前天刚写了篇文章使用Bootstrap为你的博客园自定义轮播图片(今天将图片加载的顺序调整了下,不在访问的时候直接加载,而是页面加载最后在脚本里面动态添加dom元素),虽说技术含量不怎么高,但是大家还算感兴趣.其实对博主来说最关键是博客的积分在涨.所以趁热打铁,再来一篇使用wcf+js ajax跨域请求数据同步空间说说的帖子. 因为是请求qq说说的数据,所以要登陆我的qq,这个很麻烦,总不能让每个访客都登陆的qq,然后把数据取出来吧,而且qq也没有相关的接口提供,登陆的时候还要处理验证码.所以这

商情能不能直接发布到博客 论坛 微博 贴吧这些平台上

商情能不能直接发布到博客 论坛 微博 贴吧这些平台上 商情能不能直接发布到博客 论坛 微博 贴吧这些平台上 商情能不能直接发布到博客 论坛 微博 贴吧这些平台上 本信息由搜客组合营销软件发出.

ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件

1. 为啥要做这个点赞插件?    praise.js是一款小巧的jQuery点赞插件,使用简便,效果美观. 在做个人博客时遇到了文章点赞问题.联想到各大社交网络中的点赞特效:手势放大.红心放大等等,很酷很炫.但是并没有现成的好用的插件,于是就打算自己做一个类似的点赞插件,放上自己喜欢的点赞图标. 先来看一下效果图吧:也可以去我的博客站 www.zynblog.com亲身体验一下. 注:(博客地址:www.zynblog.com,采用ASP.NET MVC + Bootstrap搭建) 2. 插

基于Hexo+Node.js+github+coding搭建个人博客——基础篇

附上个人教程:http://www.ookamiantd.top/2017/build-blog-hexo-base/ 搭建此博客的动机以及好处在此就不多谈了,之前已经表达过,详情请看Start My Blog Trip - Power By Hexo 记录一下搭建的基本过程以及遇到的一些问题,仅供参考 = =废话不多说,进入主题 Hexo博客搭建的基础大致流程为: 安装Node.js →安装Git → 安装Hexo → 安装主题 → 本地测试运行 → 注册给github与coding并创建pa

Vue.js 创建多人共享博客

多人共享博客 上一个项目:仿 CNODE 社区 刚完成,感觉有点意犹未尽,对于 登录 这一块老师并没有展开,我先是用了 localStorage 自己瞎搞,跑通之后想了下,vuex 不是专门做全局状态管理的么?那么用 vuex 做登录是最合适不过的呀.于是又搜了些别人用 vuex 做登录状态管理的案例,算是搞明白了. 现在选择了若愚老师的这个项目,主要是巩固一下对 vue 的认识,同时对 vuex 做个更详细的了解. 本项目做一款多人共享博客,包含首页.用户文章列表.登录.注册.个人管理.编辑.

如何在博客园没有js执行权限下执行js脚本

前言 小弟刚刚申请的这个博客园博客还比较年轻,没有js执行权限,但是我又想执行js脚本,只好动动歪脑筋. 先从博客园管理中的“页首Html代码”中填写script标签代码,发现保存直接被删除了,又测试了下iframe和frame标签,一样被删除了. 被删除,script标签没有被写入DOM: 解决方案-利用IMG标签的行内事件执行JS 虽然script被删,但是在随后的测试中发现可以添加图片标签. 代码: <img src="http://www.baidu.com/img/baidu_j

LAMP架构实现网站动静分离及流行博客论坛安装实验

动静分离能有效提升站点访问效率,此时apache工作在反向代理模式.PHP不在作为apache的模块.而是以独立服务器的方式运行.两者之间通过fcgi机制建立通讯. 一.安装DNS服务实现域名解析 1.安装bind [[email protected] ~]# yum install bind 2.配置named主配置文件 [[email protected] ~]# vim /etc/named.conf // // named.conf // // Provided by Red Hat b

博客园申请js权限

申请了三次,都被拒了,没想到这东西要求这么严的...... 这是在网上看到的别人写的,很礼貌...... 尊敬的博客园管理员, 请问是否可以帮我开通js权限,我需要一写简单的js来解决例如代码高亮等外观调整. 谢谢您的帮助. 原文地址:https://www.cnblogs.com/tanrong/p/8593144.html

一款基于vue.js 和node构建个人博客项目

前言 本项目是一款个人学习的博客项目,主要是为了学习vue2 和 node.js.另外涉及到MySQL redis nginx 等技术栈知识 项目地址 预览地址 (PC或者手机) > 注意:PC端支持markdown编辑博客,但是手机端不支持编辑,仅支持查看博客内容 博客预览地址:node后台版本 预览账号 账号:test 密码:123 技术栈 前端:html.css.sass.ES6.webpack.vue-cli.vue2.vuex.vue-router.axios.element-ui 后