cnblogs 代码高亮显示后的代码复制问题解决实现代码
cnblogs 代码高亮显示后的代码复制问题解决实现代码
发布时间:2016-12-30 来源:查字典编辑
摘要:没想到最近(2012年12月份)实现代码复制问题,要不所有内容都是一行,只有拥有工具的人士才能很快的看到代码,这样代码用起来就简单多了,可以...

没想到最近(2012年12月份)实现代码复制问题,要不所有内容都是一行,只有拥有工具的人士才能很快的看到代码,这样代码用起来就简单多了,可以直接复制了啊,不用每次是转化什么的。

这篇文章技术是技术为主,看看他们用了什么方法,需要的朋友可以参考下。为方便备份,先打包一份代码,有需要的自己研究。

复制代码 代码如下:

//#region Copy&Run Code

$(function () {

var hlCodes = $("#cnblogs_post_body div.cnblogs_code");

if (hlCodes.length) {

loadEncoderJs();

$.each(hlCodes, function () {

var htmlContent = $(this).html();

$(this).html(htmlContent.replace(/(<brs*/?>){3}/gi, '<br/><br/>'));

if ($(this).find("div.cnblogs_code_hide").length == 0) {

if (parseInt($(this).css("height"), 10) > 30) {

showCopyCode($(this));

var regex = /<scripts+type=["']text/javascript["']>/gi;

if (regex.test($(this).text())) {

showRunCode($(this));

}

}

}

});

}

});

function showCopyCode(element) {

$(element).append('<div><span><a href="javascript:void(0);">复制代码</a></span>');

}

function loadEncoderJs() {

var encoderJs = document.createElement('script');

encoderJs.type = 'text/javascript';

encoderJs.src = 'http://common.cnblogs.com/script/encoder.js';

var node = document.getElementsByTagName('script')[0];

node.parentNode.insertBefore(encoderJs, node);

}

function copyCnblogsCode(element) {

var codeContainer = getCnblogsCodeContainer(element);

var cbCode = getCnblogsCodeText(codeContainer);

var textarea = document.createElement('textarea');

$(textarea).val(cbCode).select();

$(textarea).css("width", $(codeContainer).css("width"));

$(textarea).css("height", $(codeContainer).css("height"));

$(textarea).css("font-family", "Courier New");

$(textarea).css("font-size", "12px");

$(textarea).css("line-height", "1.5");

$(codeContainer).parent().html(textarea);

$(textarea).select();

$("<div>按 Ctrl+C 复制代码</div>").insertAfter($(textarea));

}

function getCnblogsCodeContainer(element) {

var codeContainer = $(element).parent().parent().parent().find("pre");

if (codeContainer.length == 0) {

codeContainer = $(element).parent().parent().parent().find("div").first();

}

return codeContainer;

}

function getCnblogsCodeText(codeContainer) {

var cbCode = 'n' + $(codeContainer).html()

.replace(//g, ' ')

.replace(/<brs*/?>/ig, 'n')

.replace(/<[^>]*>/g, '');

cbCode = cbCode.replace(/n(s*d+)/ig, 'n');

cbCode = cbCode.replace(/n/g, 'rn');

if (typeof Encoder != undefined) {

cbCode = Encoder.htmlDecode(cbCode);

}

cbCode = $.trim(cbCode);

return cbCode;

}

function showRunCode(element) {

var codeCopyDiv = $(element).find("div.cnblogs_code_toolbar");

if (codeCopyDiv.length) {

$(codeCopyDiv).append('<span><a href="javascript:void(0);">运行代码</a></span>');

}

}

function runJsCode(element) {

var codeContainer = getCnblogsCodeContainer(element);

var cbCode = getCnblogsCodeText(codeContainer);

var newwin = window.open('', "_blank", '');

newwin.document.open('text/html', 'replace');

newwin.opener = null;

newwin.document.write(cbCode);

newwin.document.close();

}

//#endregion

打包下载

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类