mirror of
https://gitee.com/coder-xiaomo/flashsale
synced 2025-01-31 05:30:25 +08:00
680 lines
18 KiB
JavaScript
680 lines
18 KiB
JavaScript
|
(function(old) {
|
|||
|
$.fn.attr = function() {
|
|||
|
if(arguments.length === 0) {
|
|||
|
if(this.length === 0) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
var obj = {};
|
|||
|
$.each(this[0].attributes, function() {
|
|||
|
if(this.specified) {
|
|||
|
obj[this.name] = this.value;
|
|||
|
}
|
|||
|
});
|
|||
|
return obj;
|
|||
|
}
|
|||
|
|
|||
|
return old.apply(this, arguments);
|
|||
|
};
|
|||
|
})($.fn.attr);
|
|||
|
|
|||
|
jQuery.extend({
|
|||
|
drWindowLocation:function(href,isShownLoading){
|
|||
|
if(isShownLoading){
|
|||
|
$('#loadingBar').drloadingbar("startLoad");
|
|||
|
}
|
|||
|
window.location.href=href;
|
|||
|
},
|
|||
|
adjustNode:function(node,isRoot){
|
|||
|
var childNodes = node.children();
|
|||
|
var tagName = node[0].tagName.toLowerCase();
|
|||
|
if(tagName == null){
|
|||
|
//普通字符串节点,不转化
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if(childNodes.length > 0){
|
|||
|
//不是叶子节点,先去调整所有子节点
|
|||
|
for(var i = 0; i < childNodes.length; i++){
|
|||
|
$.adjustNode($(childNodes[i]),false);
|
|||
|
}
|
|||
|
}else{
|
|||
|
//叶子节点
|
|||
|
var display = $.getElementDefaultDisplay(tagName);
|
|||
|
if(display == "block" || display=="list-item"){
|
|||
|
if(tagName == "p"){
|
|||
|
//本身就是段落,不替换
|
|||
|
}else if(tagName == "hr"){
|
|||
|
//分割线,不替换
|
|||
|
}else{
|
|||
|
//替换成段落
|
|||
|
if(node.hasClass("drimgCaption")){
|
|||
|
//不替换
|
|||
|
}else{
|
|||
|
node.contents().unwrap().wrap("<p></p>");
|
|||
|
}
|
|||
|
}
|
|||
|
}else{
|
|||
|
//行内元素,不替换
|
|||
|
if(tagName=="img"){
|
|||
|
//图片元素,包裹imgcaption
|
|||
|
if(!node.parent().hasClass("drimgPackage")){
|
|||
|
node.wrap('<div class="drimgPackage"></div>');
|
|||
|
node.parent().append($('<div class="drimgCaption"> <br></div>'));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//非叶子节点调整完所有底部节点后
|
|||
|
|
|||
|
//处理换行问题
|
|||
|
var hasBr = false;;
|
|||
|
for(var i = 0; i < node.children().length; i++){
|
|||
|
if(node.children()[i].tagName.toLowerCase() == "br"){
|
|||
|
if(node.closest(".drimgPackage").length > 0){
|
|||
|
|
|||
|
}else{
|
|||
|
hasBr = true;
|
|||
|
}
|
|||
|
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
if(hasBr){
|
|||
|
var brNodePosition = [];
|
|||
|
var contentsChild = node.contents();
|
|||
|
for(var i = 0; i < contentsChild.length; i++){
|
|||
|
var content = contentsChild[i];
|
|||
|
if(content.nodeType == 1){
|
|||
|
var contentTagName = content.tagName.toLowerCase();
|
|||
|
if(contentTagName == "br"){
|
|||
|
brNodePosition.push(i);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
var shouldWrapNodePosition = [];
|
|||
|
var wrapGroup = [];
|
|||
|
for(var i = 0; i < brNodePosition.length;i++){
|
|||
|
var j = i + 1;
|
|||
|
var k = i - 1;
|
|||
|
var allPrevNode = [];
|
|||
|
if(i == 0){
|
|||
|
|
|||
|
for(var index = 0; index < brNodePosition[i]; index++ ){
|
|||
|
allPrevNode.push($(node.contents()[index]));
|
|||
|
}
|
|||
|
}else{
|
|||
|
|
|||
|
}
|
|||
|
var allPostNode = [];
|
|||
|
if(j < brNodePosition.length){
|
|||
|
|
|||
|
for(var index = brNodePosition[i] + 1; index < brNodePosition[j]; index++ ){
|
|||
|
allPostNode.push($(node.contents()[index]));
|
|||
|
}
|
|||
|
|
|||
|
}else{
|
|||
|
for(var index = brNodePosition[i] + 1; index < node.contents().length; index++ ){
|
|||
|
allPostNode.push($(node.contents()[index]));
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
wrapGroup.push(allPrevNode);
|
|||
|
wrapGroup.push(allPostNode);
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
var originContent = node.contents();
|
|||
|
for(var i = 0; i < wrapGroup.length; i++){
|
|||
|
var wrapObj = originContent.filter(function(){
|
|||
|
for(var j = 0; j < wrapGroup[i].length;j++){
|
|||
|
if(wrapGroup[i][j][0] == this){
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
});
|
|||
|
wrapObj.wrapAll("<p></p>");
|
|||
|
}
|
|||
|
//去掉br
|
|||
|
node.find("br").remove();
|
|||
|
|
|||
|
}
|
|||
|
if(isRoot){
|
|||
|
return;
|
|||
|
}
|
|||
|
var display = $.getElementDefaultDisplay(tagName);
|
|||
|
if(display == "block" || display=="list-item"){
|
|||
|
if(tagName == "p"){
|
|||
|
//本身就是段落,不替换
|
|||
|
}else if(tagName=="aside" || tagName=="blockquote" || tagName == "ul" || tagName == "ol" || tagName =="dl"
|
|||
|
|| tagName == "div" || tagName=="section" || tagName=="article" || tagName=="header" || tagName=="footer"
|
|||
|
|| tagName == "div" || tagName =="form" || tagName == "head" || tagName == "nav"){
|
|||
|
//容器类
|
|||
|
if(tagName == "div" && (node.hasClass("drimgPackage") || node.hasClass("drimgCaption") )){
|
|||
|
|
|||
|
}else{
|
|||
|
var prev = node.prev();
|
|||
|
var next = node.next();
|
|||
|
var parent = node.parent();
|
|||
|
if(prev.length > 0){
|
|||
|
node.children().insertAfter(prev);
|
|||
|
}else if(next.length > 0){
|
|||
|
node.children().insertBefore(next);
|
|||
|
}else{
|
|||
|
node.children().prependTo(parent);
|
|||
|
}
|
|||
|
node.remove();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}else{
|
|||
|
$newElement = $("<p></p>");
|
|||
|
var oldAttrs = node.attr();
|
|||
|
for(var key in oldAttrs){
|
|||
|
$newElement.attr(key,oldAttrs[key]);
|
|||
|
}
|
|||
|
$newElement.html(node.html());
|
|||
|
$newElement.insertAfter(node);
|
|||
|
node.remove();
|
|||
|
}
|
|||
|
|
|||
|
}else{
|
|||
|
//行内元素
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
getElementDefaultDisplay:function(tag) {
|
|||
|
var cStyle,
|
|||
|
t = document.createElement(tag),
|
|||
|
gcs = "getComputedStyle" in window;
|
|||
|
|
|||
|
document.body.appendChild(t);
|
|||
|
cStyle = (gcs ? window.getComputedStyle(t, "") : t.currentStyle).display;
|
|||
|
document.body.removeChild(t);
|
|||
|
|
|||
|
return cStyle;
|
|||
|
},
|
|||
|
clearNode:function(node){
|
|||
|
if(node != null){
|
|||
|
if(node.hasClass("drimgCaption")){
|
|||
|
node.removeAttr("class");
|
|||
|
node.addClass("drimgCaption");
|
|||
|
}else if(node.hasClass("drimgPackage")){
|
|||
|
node.removeAttr("class");
|
|||
|
node.addClass("drimgPackage");
|
|||
|
}else{
|
|||
|
node.removeAttr("class");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
node.removeAttr("style");
|
|||
|
|
|||
|
if(node[0].tagName == null){
|
|||
|
//普通文本,没有tag
|
|||
|
return false;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//去掉所有内置属性
|
|||
|
var tagName = node[0].tagName.toLowerCase();
|
|||
|
var attrObj = node.attr();
|
|||
|
for(var key in attrObj){
|
|||
|
if(tagName == "img" && key == "src"){
|
|||
|
continue;
|
|||
|
}else if(tagName=="a" && key=="href"){
|
|||
|
node.attr("target","_blank");
|
|||
|
continue;
|
|||
|
}else if(tagName=="a" && key=="target"){
|
|||
|
continue;
|
|||
|
}else if(key=="class"){
|
|||
|
continue;
|
|||
|
}
|
|||
|
node.removeAttr(key);
|
|||
|
}
|
|||
|
|
|||
|
if($.shouldbeEmptyNode(node)){
|
|||
|
|
|||
|
//本节点自身为空,去除
|
|||
|
return true;
|
|||
|
}else{
|
|||
|
var children = node.children();
|
|||
|
var removeNode = [];
|
|||
|
for(var i = 0; i < children.length; i++){
|
|||
|
if($.clearNode($(children[i]))){
|
|||
|
removeNode.push($(children[i]));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
for(var i = 0; i < removeNode.length; i++){
|
|||
|
removeNode[i].remove();
|
|||
|
}
|
|||
|
//子节点移除后判断父节点是否为空
|
|||
|
if($.shouldbeEmptyNode(node)){
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
},
|
|||
|
shouldbeEmptyNode:function(node){
|
|||
|
var tagName = node[0].tagName.toLowerCase();
|
|||
|
|
|||
|
if(tagName == "img"){
|
|||
|
return false;
|
|||
|
}
|
|||
|
if(tagName == "hr"){
|
|||
|
return false;
|
|||
|
}
|
|||
|
if(tagName == "br"){
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
if(tagName == "div" && (node.hasClass("drimgCaption") || node.hasClass("drimgPackage"))){
|
|||
|
return false;
|
|||
|
}
|
|||
|
var ret = ($.trim(node.text()) === '' && node.children().length == 0);
|
|||
|
return ret;
|
|||
|
},
|
|||
|
removeEmptyNode:function(node){
|
|||
|
node.filter(function() {
|
|||
|
var returnValue = ($.trim($(this).text()) === '' && $(this).children().length == 0);
|
|||
|
return returnValue;
|
|||
|
}).remove();
|
|||
|
},
|
|||
|
getGuid:function(){
|
|||
|
function S4() {
|
|||
|
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
|
|||
|
}
|
|||
|
return (S4()+S4()+""+S4()+""+S4()+""+S4()+""+S4()+S4()+S4());
|
|||
|
},
|
|||
|
// processContentEditableStr:function(blockElement){
|
|||
|
// var content = "";
|
|||
|
// var inputChildren = blockElement.children();
|
|||
|
// for(var i = 0; i < inputChildren.length; i++){
|
|||
|
// if($(inputChildren[i])[0].tagName.toLowerCase() == "br"){
|
|||
|
// content = content + "\n";
|
|||
|
// continue;
|
|||
|
// }
|
|||
|
// var tagName = inputChildren[i].tagName.toLowerCase();
|
|||
|
//
|
|||
|
// if($.getElementDefaultDisplay(tagName)=="block" || $.getElementDefaultDisplay(tagName)=="list-item"){
|
|||
|
// if($(inputChildren[i]).text() != ""){
|
|||
|
// content = content + "\n" + $.processContentEditableStr($(inputChildren[i]));
|
|||
|
// }else{
|
|||
|
// content = content + $.processContentEditableStr($(inputChildren[i]));
|
|||
|
// }
|
|||
|
//
|
|||
|
// }else{
|
|||
|
// content = content + $(inputChildren[i]).text();
|
|||
|
// }
|
|||
|
//
|
|||
|
// }
|
|||
|
// var parentContent = blockElement.contents().filter(function() {
|
|||
|
// return this.nodeType === 3;
|
|||
|
// }).text();
|
|||
|
// content = parentContent + content;
|
|||
|
// return content;
|
|||
|
// },
|
|||
|
processContentEditableStr:function(blockElement,isRoot){
|
|||
|
var content = "";
|
|||
|
var inputChildren = blockElement.contents();
|
|||
|
|
|||
|
for(var i = 0; i < inputChildren.length; i++){
|
|||
|
if(inputChildren[i].nodeType === 3){
|
|||
|
content = content + $(inputChildren[i]).text();
|
|||
|
continue;
|
|||
|
}
|
|||
|
if(inputChildren[i].tagName.toLowerCase() == "br"){
|
|||
|
content = content + "\n";
|
|||
|
continue;
|
|||
|
}
|
|||
|
var tagName = inputChildren[i].tagName.toLowerCase();
|
|||
|
|
|||
|
if($.getElementDefaultDisplay(tagName)=="block" || $.getElementDefaultDisplay(tagName)=="list-item"){
|
|||
|
var textNode= $(inputChildren[i]).contents().filter(function() {
|
|||
|
return this.nodeType === 3;
|
|||
|
});
|
|||
|
if(textNode.length > 0){
|
|||
|
content = content + "\n" + $.processContentEditableStr($(inputChildren[i]),false);
|
|||
|
}else{
|
|||
|
content = content + $.processContentEditableStr($(inputChildren[i]),false);
|
|||
|
}
|
|||
|
|
|||
|
}else{
|
|||
|
content = content + $.processContentEditableStr($(inputChildren[i]),false);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
// var parentContent = blockElement.contents().filter(function() {
|
|||
|
// return this.nodeType === 3;
|
|||
|
// }).text();
|
|||
|
// content = parentContent + content;
|
|||
|
if(isRoot){
|
|||
|
//去掉第一个回车
|
|||
|
if(content != "" && content[0] == "\n"){
|
|||
|
content = content.substring(1,content.length);
|
|||
|
}
|
|||
|
}
|
|||
|
return content;
|
|||
|
},
|
|||
|
nl2br:function(str, is_xhtml) {
|
|||
|
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br/>' : '<br>';
|
|||
|
//return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
|
|||
|
str=str.replace(/\r\n/g,breakTag);
|
|||
|
str=str.replace(/\n/g,breakTag);
|
|||
|
return str;
|
|||
|
},
|
|||
|
setSelectionRange:function(input, selectionStart, selectionEnd) {
|
|||
|
if (input.setSelectionRange) {
|
|||
|
input.focus();
|
|||
|
input.setSelectionRange(selectionStart, selectionEnd);
|
|||
|
}
|
|||
|
else if (input.createTextRange) {
|
|||
|
var range = input.createTextRange();
|
|||
|
range.collapse(true);
|
|||
|
range.moveEnd('character', selectionEnd);
|
|||
|
range.moveStart('character', selectionStart);
|
|||
|
range.select();
|
|||
|
}
|
|||
|
},
|
|||
|
focuscurorInContentEditable:function(selector,position){
|
|||
|
selector.each(function(){
|
|||
|
var el = this;
|
|||
|
var range = document.createRange();
|
|||
|
var sel = window.getSelection();
|
|||
|
range.setStart(el.childNodes[0], position);
|
|||
|
range.collapse(true);
|
|||
|
sel.removeAllRanges();
|
|||
|
sel.addRange(range);
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
getDeviceWidthType: function(){
|
|||
|
var clientWidth = document.documentElement.clientWidth;
|
|||
|
if(clientWidth <= 800){
|
|||
|
return 1;
|
|||
|
}else{
|
|||
|
return 4; //>800统一按照pc处理暂时
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
getDeviceWidth:function(){
|
|||
|
var clientWidth = document.documentElement.clientWidth;
|
|||
|
return clientWidth;
|
|||
|
},
|
|||
|
getDeviceHeight:function(){
|
|||
|
var clientHeight = document.documentElement.clientHeight;
|
|||
|
return clientHeight;
|
|||
|
},
|
|||
|
|
|||
|
htmlspecialchars:function(str){
|
|||
|
str = str.replace(/&/g, '&');
|
|||
|
str = str.replace(/</g, '<');
|
|||
|
str = str.replace(/>/g, '>');
|
|||
|
str = str.replace(/"/g, '"');
|
|||
|
str = str.replace(/'/g, ''');
|
|||
|
return str;
|
|||
|
},
|
|||
|
|
|||
|
getDateFormat:function(time){
|
|||
|
time = new Date(time*1000);
|
|||
|
var year=time.getYear() + 1900;
|
|||
|
var month=time.getMonth()+1;
|
|||
|
var date=time.getDate();
|
|||
|
var hour=time.getHours();
|
|||
|
var minute=time.getMinutes();
|
|||
|
var second=time.getSeconds();
|
|||
|
return year+"."+month+"."+date;
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
getMeaningfulTimeStr:function(time){
|
|||
|
var nowTime = (Date.parse(new Date()))/1000;
|
|||
|
var time = time;
|
|||
|
var delta = nowTime-time;
|
|||
|
if(delta < 60){
|
|||
|
return "1 分钟前";
|
|||
|
}else if(delta < 3600){
|
|||
|
delta = Math.floor(delta/60);
|
|||
|
return delta+" 分钟前";
|
|||
|
}else if(delta < 86400){
|
|||
|
delta = Math.floor(delta/3600);
|
|||
|
return delta+" 小时前";
|
|||
|
}else {
|
|||
|
//判断是否是昨天
|
|||
|
var today = new Date();
|
|||
|
today.setHours(0);
|
|||
|
today.setMinutes(0);
|
|||
|
today.setSeconds(0);
|
|||
|
today.setMilliseconds(0);
|
|||
|
var oneday = 1000* 60 * 60 * 24;
|
|||
|
var yesterday = new Date(today - oneday);
|
|||
|
var yesterdayTime = (Date.parse(yesterday))/1000;
|
|||
|
|
|||
|
timeDate = new Date(time*1000);
|
|||
|
var year=timeDate.getYear() + 1900;
|
|||
|
var month=timeDate.getMonth()+1;
|
|||
|
var date=timeDate.getDate();
|
|||
|
var hour=timeDate.getHours();
|
|||
|
var minute=timeDate.getMinutes();
|
|||
|
var second=timeDate.getSeconds();
|
|||
|
|
|||
|
if (month.toString().length == 1) {
|
|||
|
month = "0" + month;
|
|||
|
}
|
|||
|
if (date.toString().length == 1) {
|
|||
|
date = "0" + date;
|
|||
|
}
|
|||
|
|
|||
|
if (minute.toString().length == 1) {
|
|||
|
minute = "0" + minute;
|
|||
|
}
|
|||
|
|
|||
|
if (hour.toString().length == 1) {
|
|||
|
hour = "0" + hour;
|
|||
|
}
|
|||
|
if (second.toString().length == 1) {
|
|||
|
second = "0" + second;
|
|||
|
}
|
|||
|
|
|||
|
if(yesterdayTime <= time){
|
|||
|
//是昨天
|
|||
|
return "昨天 " + hour +":"+minute;
|
|||
|
|
|||
|
}else{
|
|||
|
return year+"-"+month+"-"+date + " " + hour +":"+minute;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
getTransitionEnd:function() {
|
|||
|
var el = document.createElement('dragon')
|
|||
|
|
|||
|
var transEndEventNames = {
|
|||
|
WebkitTransition : 'webkitTransitionEnd',
|
|||
|
MozTransition : 'transitionend',
|
|||
|
OTransition : 'oTransitionEnd otransitionend',
|
|||
|
transition : 'transitionend'
|
|||
|
}
|
|||
|
|
|||
|
for (var name in transEndEventNames) {
|
|||
|
if (el.style[name] !== undefined) {
|
|||
|
return { end: transEndEventNames[name] }
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return false // explicit for ie8 ( ._.)
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
//补充jquery被废弃的broswer变量判断浏览器类型
|
|||
|
var matched, browser;
|
|||
|
|
|||
|
jQuery.uaMatch = function( ua ) {
|
|||
|
ua = ua.toLowerCase();
|
|||
|
|
|||
|
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
|
|||
|
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
|
|||
|
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
|
|||
|
/(msie)[\s?]([\w.]+)/.exec( ua ) ||
|
|||
|
/(trident)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
|
|||
|
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
|
|||
|
[];
|
|||
|
|
|||
|
return {
|
|||
|
browser: match[ 1 ] || "",
|
|||
|
version: match[ 2 ] || "0"
|
|||
|
};
|
|||
|
};
|
|||
|
|
|||
|
matched = jQuery.uaMatch( navigator.userAgent );
|
|||
|
//IE 11+ fix (Trident)
|
|||
|
matched.browser = matched.browser == 'trident' ? 'msie' : matched.browser;
|
|||
|
browser = {};
|
|||
|
|
|||
|
if ( matched.browser ) {
|
|||
|
browser[ matched.browser ] = true;
|
|||
|
browser.version = matched.version;
|
|||
|
}
|
|||
|
|
|||
|
// Chrome is Webkit, but Webkit is also Safari.
|
|||
|
if ( browser.chrome ) {
|
|||
|
browser.webkit = true;
|
|||
|
} else if ( browser.webkit ) {
|
|||
|
browser.safari = true;
|
|||
|
}
|
|||
|
|
|||
|
jQuery.browser = browser;
|
|||
|
|
|||
|
|
|||
|
(function( $ ){
|
|||
|
|
|||
|
var methods = {
|
|||
|
init : function( options ){
|
|||
|
var $this = this;
|
|||
|
options = $.extend( $.fn.drcontenteditable.options, options );
|
|||
|
return this.each(function(){
|
|||
|
|
|||
|
$this.on("paste",function(e){
|
|||
|
|
|||
|
var pasteText = e.originalEvent.clipboardData.getData("text/plain");
|
|||
|
//替换/r/n为br
|
|||
|
pasteText = pasteText.replace(/\r\n/g,"<br/>");
|
|||
|
pasteText = pasteText.replace(/\r/g,"<br/>");
|
|||
|
pasteText = pasteText.replace(/\n/g,"<br/>");
|
|||
|
document.execCommand("insertHTML", false, pasteText);
|
|||
|
e.preventDefault();
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
getContent:function(){
|
|||
|
|
|||
|
|
|||
|
function extractTextWithWhitespaceWorker(elems, lineBreakNodeName)
|
|||
|
{
|
|||
|
var ret = "";
|
|||
|
var elem;
|
|||
|
|
|||
|
for (var i = 0; elems[i]; i++)
|
|||
|
{
|
|||
|
elem = elems[i];
|
|||
|
|
|||
|
if (elem.nodeType === 3 // text node
|
|||
|
|| elem.nodeType === 4) // CDATA node
|
|||
|
{
|
|||
|
ret += elem.nodeValue;
|
|||
|
}
|
|||
|
|
|||
|
if (elem.nodeName === lineBreakNodeName )
|
|||
|
{
|
|||
|
if(elem.nodeType == 1 && $(elem).text() != ""){
|
|||
|
ret += "\n";
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if(elem.nodeName === "BR"){
|
|||
|
ret += "\n";
|
|||
|
}
|
|||
|
|
|||
|
if (elem.nodeType !== 8) // comment node
|
|||
|
{
|
|||
|
ret += extractTextWithWhitespace(elem.childNodes, lineBreakNodeName);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return ret;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function extractTextWithWhitespace(elems)
|
|||
|
{
|
|||
|
var lineBreakNodeName = "BR"; // Use <br> as a default
|
|||
|
if ($.browser.webkit)
|
|||
|
{
|
|||
|
lineBreakNodeName = "DIV";
|
|||
|
}
|
|||
|
else if ($.browser.msie)
|
|||
|
{
|
|||
|
lineBreakNodeName = "P";
|
|||
|
}
|
|||
|
else if ($.browser.mozilla)
|
|||
|
{
|
|||
|
lineBreakNodeName = "BR";
|
|||
|
}
|
|||
|
else if ($.browser.opera)
|
|||
|
{
|
|||
|
lineBreakNodeName = "P";
|
|||
|
}
|
|||
|
var extractedText = extractTextWithWhitespaceWorker(elems, lineBreakNodeName);
|
|||
|
|
|||
|
return extractedText;
|
|||
|
}
|
|||
|
|
|||
|
return extractTextWithWhitespace(this.contents());
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
|
|||
|
$.fn.drcontenteditable = function( method ) {
|
|||
|
|
|||
|
// Method calling logic
|
|||
|
if ( methods[method] ) {
|
|||
|
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
|
|||
|
} else if ( typeof method === 'object' || ! method ) {
|
|||
|
return methods.init.apply( this, arguments );
|
|||
|
} else {
|
|||
|
$.error( 'Method ' + method + ' does not exist on jQuery.drcontenteditable' );
|
|||
|
}
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
$.fn.drcontenteditable.options = {};
|
|||
|
|
|||
|
|
|||
|
})( jQuery );
|