?? tiny_mce_src.js
字號:
/*
walk : function(n, f, s) {
var d = this.doc, w;
if (d.createTreeWalker) {
w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
while ((n = w.nextNode()) != null)
f.call(s || this, n);
} else
tinymce.walk(n, f, 'childNodes', s);
}
*/
/*
toRGB : function(s) {
var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
if (c) {
// #FFF -> #FFFFFF
if (!is(c[3]))
c[3] = c[2] = c[1];
return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
}
return s;
}
*/
});
// Setup page DOM
tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
})();
/* file:jscripts/tiny_mce/classes/dom/Event.js */
(function() {
// Shorten names
var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;
tinymce.create('static tinymce.dom.Event', {
inits : [],
events : [],
// #if !jquery
add : function(o, n, f, s) {
var cb, t = this, el = t.events, r;
// Handle array
if (o && o instanceof Array) {
r = [];
each(o, function(o) {
o = DOM.get(o);
r.push(t.add(o, n, f, s));
});
return r;
}
o = DOM.get(o);
if (!o)
return;
// Setup event callback
cb = function(e) {
e = e || window.event;
// Patch in target in IE it's W3C valid
if (e && !e.target && isIE)
e.target = e.srcElement;
if (!s)
return f(e);
return f.call(s, e);
};
if (n == 'unload') {
tinymce.unloads.unshift({func : cb});
return cb;
}
if (n == 'init') {
if (t.domLoaded)
cb();
else
t.inits.push(cb);
return cb;
}
// Store away listener reference
el.push({
obj : o,
name : n,
func : f,
cfunc : cb,
scope : s
});
t._add(o, n, cb);
return f;
},
remove : function(o, n, f) {
var t = this, a = t.events, s = false, r;
// Handle array
if (o && o instanceof Array) {
r = [];
each(o, function(o) {
o = DOM.get(o);
r.push(t.remove(o, n, f));
});
return r;
}
o = DOM.get(o);
each(a, function(e, i) {
if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) {
a.splice(i, 1);
t._remove(o, n, e.cfunc);
s = true;
return false;
}
});
return s;
},
clear : function(o) {
var t = this, a = t.events, i, e;
if (o) {
o = DOM.get(o);
for (i = a.length - 1; i >= 0; i--) {
e = a[i];
if (e.obj === o) {
t._remove(e.obj, e.name, e.cfunc);
e.obj = e.cfunc = null;
a.splice(i, 1);
}
}
}
},
// #endif
cancel : function(e) {
if (!e)
return false;
this.stop(e);
return this.prevent(e);
},
stop : function(e) {
if (e.stopPropagation)
e.stopPropagation();
else
e.cancelBubble = true;
return false;
},
prevent : function(e) {
if (e.preventDefault)
e.preventDefault();
else
e.returnValue = false;
return false;
},
_unload : function() {
var t = Event;
each(t.events, function(e, i) {
t._remove(e.obj, e.name, e.cfunc);
e.obj = e.cfunc = null;
});
t.events = [];
t = null;
},
_add : function(o, n, f) {
if (o.attachEvent)
o.attachEvent('on' + n, f);
else if (o.addEventListener)
o.addEventListener(n, f, false);
else
o['on' + n] = f;
},
_remove : function(o, n, f) {
if (o) {
try {
if (o.detachEvent)
o.detachEvent('on' + n, f);
else if (o.removeEventListener)
o.removeEventListener(n, f, false);
else
o['on' + n] = null;
} catch (ex) {
// Might fail with permission denined on IE so we just ignore that
}
}
},
_pageInit : function() {
var e = Event;
// Safari on Mac fires this twice
if (e.domLoaded)
return;
e._remove(window, 'DOMContentLoaded', e._pageInit);
e.domLoaded = true;
each(e.inits, function(c) {
c();
});
e.inits = [];
},
_wait : function() {
var t;
// No need since the document is already loaded
if (window.tinyMCE_GZ && tinyMCE_GZ.loaded) {
Event.domLoaded = 1;
return;
}
if (isIE && document.location.protocol != 'https:') {
// Fake DOMContentLoaded on IE
document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');
DOM.get("__ie_onload").onreadystatechange = function() {
if (this.readyState == "complete") {
Event._pageInit();
DOM.get("__ie_onload").onreadystatechange = null; // Prevent leak
}
};
} else {
Event._add(window, 'DOMContentLoaded', Event._pageInit, Event);
if (isIE || isWebKit) {
t = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
clearInterval(t);
Event._pageInit();
}
}, 10);
}
}
}
});
// Shorten name
Event = tinymce.dom.Event;
// Dispatch DOM content loaded event for IE and Safari
Event._wait();
tinymce.addUnload(Event._unload);
})();
/* file:jscripts/tiny_mce/classes/dom/Element.js */
(function() {
var each = tinymce.each;
tinymce.create('tinymce.dom.Element', {
Element : function(id, s) {
var t = this, dom, el;
s = s || {};
t.id = id;
t.dom = dom = s.dom || tinymce.DOM;
t.settings = s;
// Only IE leaks DOM references, this is a lot faster
if (!tinymce.isIE)
el = t.dom.get(t.id);
each([
'getPos',
'getRect',
'getParent',
'add',
'setStyle',
'getStyle',
'setStyles',
'setAttrib',
'setAttribs',
'getAttrib',
'addClass',
'removeClass',
'hasClass',
'getOuterHTML',
'setOuterHTML',
'remove',
'show',
'hide',
'isHidden',
'setHTML',
'get'
], function(k) {
t[k] = function() {
var a = arguments, o;
// Opera fails
if (tinymce.isOpera) {
a = [id];
each(arguments, function(v) {
a.push(v);
});
} else
Array.prototype.unshift.call(a, el || id);
o = dom[k].apply(dom, a);
t.update(k);
return o;
};
});
},
on : function(n, f, s) {
return tinymce.dom.Event.add(this.id, n, f, s);
},
getXY : function() {
return {
x : parseInt(this.getStyle('left')),
y : parseInt(this.getStyle('top'))
};
},
getSize : function() {
var n = this.dom.get(this.id);
return {
w : parseInt(this.getStyle('width') || n.clientWidth),
h : parseInt(this.getStyle('height') || n.clientHeight)
};
},
moveTo : function(x, y) {
this.setStyles({left : x, top : y});
},
moveBy : function(x, y) {
var p = this.getXY();
this.moveTo(p.x + x, p.y + y);
},
resizeTo : function(w, h) {
this.setStyles({width : w, height : h});
},
resizeBy : function(w, h) {
var s = this.getSize();
this.resizeTo(s.w + w, s.h + h);
},
update : function(k) {
var t = this, b, dom = t.dom;
if (tinymce.isIE6 && t.settings.blocker) {
k = k || '';
// Ignore getters
if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0)
return;
// Remove blocker on remove
if (k == 'remove') {
dom.remove(t.blocker);
return;
}
if (!t.blocker) {
t.blocker = dom.uniqueId();
b = dom.add(t.settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'});
dom.setStyle(b, 'opacity', 0);
} else
b = dom.get(t.blocker);
dom.setStyle(b, 'left', t.getStyle('left', 1));
dom.setStyle(b, 'top', t.getStyle('top', 1));
dom.setStyle(b, 'width', t.getStyle('width', 1));
dom.setStyle(b, 'height', t.getStyle('height', 1));
dom.setStyle(b, 'display', t.getStyle('display', 1));
dom.setStyle(b, 'zIndex', parseInt(t.getStyle('zIndex', 1) || 0) - 1);
}
}
});
})();
/* file:jscripts/tiny_mce/classes/dom/Selection.js */
(function() {
function trimNl(s) {
return s.replace(/[\n\r]+/g, '');
};
// Shorten names
var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each;
tinymce.create('tinymce.dom.Selection', {
Selection : function(dom, win, serializer) {
var t = this;
t.dom = dom;
t.win = win;
t.serializer = serializer;
// Add events
each([
'onBeforeSetContent',
'onBeforeGetContent',
'onSetContent',
'onGetContent'
], function(e) {
t[e] = new tinymce.util.Dispatcher(t);
});
// Prevent leaks
tinymce.addUnload(t.destroy, t);
},
getContent : function(s) {
var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;
s = s || {};
wb = wa = '';
s.get = true;
s.format = s.format || 'html';
t.onBeforeGetContent.dispatch(t, s);
if (s.format == 'text')
return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : ''));
if (r.cloneContents) {
n = r.cloneContents();
if (n)
e.appendChild(n);
} else if (is(r.item) || is(r.htmlText))
e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
else
e.innerHTML = r.toString();
// Keep whitespace before and after
if (/^\s/.test(e.innerHTML))
wb = ' ';
if (/\s+$/.test(e.innerHTML))
wa = ' ';
s.getInner = true;
s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
t.onGetContent.dispatch(t, s);
return s.content;
},
setContent : function(h, s) {
var t = this, r = t.getRng(), c, d = t.win.document;
s = s || {format : 'html'};
s.set = true;
h = s.content = t.dom.processHTML(h);
// Dispatch before set content event
t.onBeforeSetContent.dispatch(t, s);
h = s.content;
if (r.insertNode) {
// Make caret marker since insertNode places the caret in the beginning of text after insert
h += '<span id="__caret">_</span>';
// Delete and insert new node
r.deleteContents();
r.insertNode(t.getRng().createContextualFragment(h));
// Move to caret marker
c = t.dom.get('__caret');
// Make sure we wrap it compleatly, Opera fails with a simple select call
r = d.createRange();
r.setStartBefore(c);
r.setEndAfter(c);
t.setRng(r);
// Delete the marker, and hopefully the caret gets placed in the right location
d.execCommand('Delete', false, null);
// In case it's still there
t.dom.remove('__caret');
} else {
if (r.item) {
// Delete content and get caret text selection
d.execCommand('Delete', false, null);
r = t.getRng();
}
r.pasteHTML(h);
}
// Dispatch set content event
t.onSetContent.dispatch(t, s);
},
getStart : function() {
var t = this, r = t.getRng(), e;
if (isIE) {
if (r.item)
return r.item(0);
r = r.duplicate();
r.collapse(1);
e = r.parentElement();
if (e && e.nodeName == 'BODY')
return e.firstChild;
return e;
} else {
e = r.startContainer;
if (e.nodeName == 'BODY')
return e.firstChild;
return t.dom.getParent(e, function(n) {return n.nodeType == 1;});
}
},
getEnd : function() {
var t = this, r = t.getRng(), e;
if (isIE) {
if (r.item)
return r.item(0);
r = r.duplicate();
r.collapse(0);
e = r.parentElement();
if (e && e.nodeName == 'BODY')
return e.lastChild;
return e;
} else {
e = r.endContainer;
if (e.nodeName == 'BODY')
return e.lastChild;
return t.dom.getParent(e, function(n) {return n.nodeType == 1;});
}
},
getBookmark : function(si) {
var t = this, r = t.getRng(), tr, sx, sy, vp = t.dom.getViewPort(t.win), e, sp, bp, le, c = -0xFFFFFF, s, ro = t.dom.getRoot(), wb = 0, wa = 0, nv;
sx = vp.x;
sy = vp.y;
// Simple bookmark fast but not as persistent
if (si == 'simple')
return {rng : r, scrollX : sx, scrollY : sy};
// Handle IE
if (isIE) {
// Control selection
if (r.item) {
e = r.item(0);
each(t.dom.select(e.nodeName), function(n, i) {
if (e == n) {
sp = i;
return false;
}
});
return {
tag : e.nodeName,
index : sp,
scrollX :
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -