do not use innerHTML

This commit is contained in:
nightwing 2017-05-14 16:08:03 +04:00
parent d679adc131
commit 09f595723a
4 changed files with 131 additions and 573 deletions

View File

@ -488,21 +488,6 @@
</a:main>
</a:presentation>
</a:radiobutton>
<a:scrollbar name="scrollbar">
<a:presentation>
<a:main btnup="div[1]" indicator="div[2]" btndown="div[3]" slidefast="div[4]">
<div class="scrollbar">
<div class="btnup"><span> </span><div><img src="images/spacer.gif" width="100%"/></div></div>
<div class="indicator"> <div> </div> </div>
<div class="btndown"><span> </span><div><img src="images/spacer.gif" width="100%"/></div></div>
<div class="slidefast"> </div>
</div>
</a:main>
</a:presentation>
</a:scrollbar>
<a:spinner name="spinner">

View File

@ -308,7 +308,7 @@ apf.dropdown = function(struct, tagName) {
//@todo apf3.0 why is this function called 6 times on init.
this.$setLabel = function(value) {
this.oLabel.innerHTML = value || this["initial-message"] || "";
this.oLabel.textContent = value || this["initial-message"] || "";
this.$setStyleClass(this.$ext, value ? "" : this.$baseCSSname + "Initial",
!value ? [] : [this.$baseCSSname + "Initial"]);

View File

@ -832,9 +832,12 @@ apf.Class.prototype = new (function(){
*/
this.dispatchEvent = function(eventName, options, e) {
var arr, result, rValue, i, l;
if (!apf.AmlEvent)
return;
if (!options)
options = {};
if (!options.name)
options.name = eventName;
apf.$eventDepth++;
this.$eventDepth++;
@ -843,12 +846,11 @@ apf.Class.prototype = new (function(){
//@todo rewrite this and all dependencies to match w3c
if ((!e || !e.currentTarget) && (!options || !options.currentTarget)) {
if (!(options || (options = {})).currentTarget)
options.currentTarget = this;
options.currentTarget = this;
//Capture support
if (arr = this.$captureStack[eventName]) {
for (i = 0, l = arr.length; i < l; i++) {
for (i = arr.length; i--;) {
rValue = arr[i].call(this, e || (e = new apf.AmlEvent(eventName, options)));
if (typeof rValue != UNDEF)
result = rValue;
@ -863,15 +865,13 @@ apf.Class.prototype = new (function(){
}
else {
if (this["on" + eventName]) {
result = this["on" + eventName].call(this, e
|| (e = new apf.AmlEvent(eventName, options))); //Backwards compatibility
result = this["on" + eventName].call(this, e || (e = options));
}
if (arr = this.$eventsStack[eventName]) {
for (i = 0, l = arr.length; i < l; i++) {
for (i = arr.length; i--;) {
if (!arr[i]) continue;
rValue = arr[i].call(this, e
|| (e = new apf.AmlEvent(eventName, options)));
rValue = arr[i].call(this, e || (e = options));
if (typeof rValue != UNDEF)
result = rValue;
}
@ -885,24 +885,12 @@ apf.Class.prototype = new (function(){
result = rValue;
}
if (--apf.$eventDepth == 0 && this.ownerDocument
&& apf.queue
) {
if (--apf.$eventDepth == 0 && this.ownerDocument && apf.queue) {
apf.queue.empty();
}
this.$eventDepth--;
if (options) {
try {
delete options.currentTarget;
}
catch (ex) {
options.currentTarget = null;
}
}
return e && typeof e.returnValue != UNDEF ? e.returnValue : result;
};
@ -921,14 +909,15 @@ apf.Class.prototype = new (function(){
if (eventName[0] == "o" && eventName[1] == "n")
eventName = eventName.substr(2);
var s, stack = useCapture ? this.$captureStack : this.$eventsStack;
if (!(s = stack[eventName]))
var stack = useCapture ? this.$captureStack : this.$eventsStack;
var s = stack[eventName]
if (!s)
s = stack[eventName] = [];
if (s.indexOf(callback) > -1)
return;
s.unshift(callback);
s.push(callback);
var f;
if (f = this.$eventsStack["$event." + eventName])
@ -1082,6 +1071,27 @@ apf.Class.prototype = new (function(){
apf.nameserver.remove(this.localName, this);
};
// Before we have Proxy Objects, we'll extend the apf objects with the needed api
this.on = function() {
this.addEventListener.apply(this, arguments);
}
this.once = function(name, listener) {
var _self = this;
function callback() {
listener.apply(this, arguments);
_self.removeEventListener(name, callback);
}
this.addEventListener(name, callback);
};
this.emit = this.dispatchEvent;
this.off = this.removeEventListener;
Object.defineProperty(this, '$html', {
get: function() { return this.$int || this.$container || this.$ext; },
enumerable: false,
configurable: true
});
})();
apf.extend(apf, new apf.Class().$init());
@ -1092,7 +1102,6 @@ apf.extend(apf, new apf.Class().$init());
apf.color = {
/*
colors: {
@ -1434,12 +1443,6 @@ apf.asyncChain = function(funcs) {
// start closure:
//(function(){
if (typeof isFinite == "undefined") {
function isFinite(val) {
return val + 1 != val;
}
}
apf.NUMBER = 1;
apf.BOOLEAN = 2;
apf.STRING = 3;
@ -1564,122 +1567,20 @@ defineProp(Array.prototype, "equals", function(obj) {
return true;
});
/*
* Make sure that an array instance contains only unique values (NO duplicates).
* Elaborate implementation to allow for O(n) time complexity compared to O(n^2)
* time complexity when using Array.prototype.indexOf.
* @see http://bbenvie.com/articles/2012-06-10/Array-prototype-unique-in-O-n-time-complexity
* @see http://jsperf.com/array-unique2/9
*
* @type {Array}
*/
var uniqueBenvie = function(){
var hasOwn = {}.hasOwnProperty,
uids = {};
defineProp(Array.prototype, "makeUnique", function(){
var out = [],
seen = new Set,
i = this.length;
// use hash for primitives and tagging for objects
function uid(){
var chars = [], i = 20, num;
while (i--) {
num = Math.random() * 52 | 0;
chars[i] = String.fromCharCode(num + (num >= 26 ? 71 : 65));
while (i--) {
if (!seen.has(this[i])) {
out[out.length] = this[i];
seen.add(this[i]);
}
chars = chars.join("");
if (chars in uids)
return uid();
uids[chars] = true;
return chars;
}
function unique(array) {
var strings = {}, numbers = {}, others = {},
tagged = [], failed = [],
count = 0, i = array.length,
item, type;
var id = uid();
while (i--) {
item = array[i];
type = typeof item;
if (item === null || type !== "object" && type !== "function") {
// primitive
switch (type) {
case "string":
strings[item] = true;
break;
case "number":
numbers[item] = true;
break;
default:
others[item] = item;
break;
}
}
else {
// object
if (!hasOwn.call(item, id)) {
try {
item[id] = true;
tagged[count++] = item;
}
catch (e) {
if (failed.indexOf(item) === -1)
failed[failed.length] = item;
}
}
}
}
// remove the tags
while (count--)
delete tagged[count][id];
tagged = tagged.concat(failed);
count = tagged.length;
// append primitives to results
for (i in strings)
if (hasOwn.call(strings, i))
tagged[count++] = i;
for (i in numbers)
if (hasOwn.call(numbers, i))
tagged[count++] = +i;
for (i in others)
if (hasOwn.call(others, i))
tagged[count++] = others[i];
return tagged;
}
return unique;
}();
if (typeof Set !== "undefined") {
defineProp(Array.prototype, "makeUnique", function(){
var out = [],
seen = new Set,
i = this.length;
while (i--) {
if (!seen.has(this[i])) {
out[out.length] = this[i];
seen.add(this[i]);
}
}
return out;
});
}
else {
defineProp(Array.prototype, "makeUnique", function(){
return uniqueBenvie(this);
});
}
return out;
});
/*
* Check if this array instance contains a value 'obj'.
@ -3317,7 +3218,7 @@ apf.isChildOf = function(pNode, childnode, orItself) {
return false;
if (childnode.nodeType == 2)
childnode = childnode.ownerElement || childnode.selectSingleNode("..");
childnode = childnode.ownerElement;
if (orItself && pNode == childnode)
return true;
@ -4319,7 +4220,28 @@ apf.queue = {
function xmlToHtml(xmlNode, shallow) {
if (xmlNode.nodeType == 1 && xmlNode.localName != "style") {
var el = document.createElement(xmlNode.localName)
var ch = xmlNode.childNodes;
if (!shallow) {
for (var i = 0; i < ch.length; i++) {
var childEl = xmlToHtml(ch[i]);
if (childEl)
el.appendChild(childEl);
}
}
var attr = xmlNode.attributes;
for (var i = 0; i < attr.length; i++) {
el.setAttribute(attr[i].name, attr[i].nodeValue);
}
return el;
} else if (xmlNode.nodeType == 3) {
var el = document.createTextNode(xmlNode.nodeValue);
// el.nodeValue = ;
return el;
}
}
/**
*
* Controls the skinning modifications for AML.
@ -4411,9 +4333,10 @@ apf.skins = {
continue;
//this.templates[nodes[i].tagName] = nodes[i];
this.skins[name].templates[nodes[i].getAttribute("name")] = nodes[i];
var htmlNode = xmlToHtml(nodes[i]);
this.skins[name].templates[htmlNode.getAttribute("name")] = htmlNode;
if (nodes[i].ownerDocument)
this.importSkinDef(nodes[i], base, name);
this.importSkinDef(nodes[i], base, name, htmlNode);
}
this.purgeCss(mediaPath, iconPath);
@ -4422,7 +4345,7 @@ apf.skins = {
/* ***********
Import
************/
importSkinDef: function(xmlNode, basepath, name) {
importSkinDef: function(xmlNode, basepath, name, htmlNode) {
var i, l, nodes = $xmlns(xmlNode, "style", apf.ns.aml), tnode, node;
for (i = 0, l = nodes.length; i < l; i++) {
node = nodes[i];
@ -4444,6 +4367,8 @@ apf.skins = {
tnode = tnode.nextSibling;
}
}
node.remove();
}
nodes = $xmlns(xmlNode, "alias", apf.ns.apf);
@ -4451,7 +4376,7 @@ apf.skins = {
for (i = 0; i < nodes.length; i++) {
if (!nodes[i].firstChild)
continue;
t[nodes[i].firstChild.nodeValue.toLowerCase()] = xmlNode;
t[nodes[i].firstChild.nodeValue.toLowerCase()] = htmlNode || xmlNode;
}
},
@ -6285,33 +6210,8 @@ apf.AmlElement = function(struct, tagName) {
* ```
*/
"id": function(value) {
if (this.name == value || !value)
return;
if (self[this.name] == this) {
self[this.name] = null;
apf.nameserver.remove(this.localName, this);
apf.nameserver.remove("all", this);
}
if (!self[value] || !self[value].hasFeature) {
try {
self[value] = this;
}
catch (ex) {
}
}
//@todo dispatch event for new name creation.
//@todo old name disposal
apf.nameserver.register(this.localName, value, this)
apf.nameserver.register("all", value, this)
@ -7098,59 +6998,6 @@ apf.AmlDocumentFragment.prototype.nodeType =
/**
* Implementation of the W3C event object. An instance of this class is passed as
* the first argument of any event handler. As per event, it contains different
* properties giving context based information about the event.
* @class apf.AmlEvent
* @default_private
*/
apf.AmlEvent = function(name, data) {
this.name = name;
var prop;
for (prop in data)
this[prop] = data[prop];
};
apf.AmlEvent.prototype = {
bubbles: false,
cancelBubble: false,
/**
* Cancels the event (if it is cancelable), without stopping further
* propagation of the event.
*/
preventDefault: function(){
this.returnValue = false;
},
/**
* Prevents further propagation of the current event.
*/
stopPropagation: function(){
this.cancelBubble = true;
},
stop: function() {
this.returnValue = false;
this.cancelBubble = true;
}
};
apf.AmlTextRectangle = function(host) {
var _self = this;
function handler(){
@ -7279,17 +7126,8 @@ apf.XhtmlElement = function(struct, tagName) {
var str, aml = this.$aml;
if (aml) {
if (aml.serialize)
str = aml.serialize();
else {
aml = aml.cloneNode(false);
str = aml.xml || aml.nodeValue;
}
str = str.replace(/ on\w+="[^"]*"| on\w+='[^']*'/g, "");
this.$ext =
this.$int = apf.insertHtmlNode(null, pHtmlNode, null, apf.html_entity_decode(str));
this.$int = pHtmlNode.appendChild(xmlToHtml(aml, true));
}
else {
this.$ext = this.$int =
@ -9161,9 +8999,7 @@ apf.Presentation = function(){
if (!textNode)
return null;
return (htmlNode
? apf.queryNode(htmlNode, textNode)
: apf.getFirstElement(node).selectSingleNode(textNode));
return findNode(htmlNode || apf.getFirstElement(node), textNode);
};
this.$getOption = function(type, section) {
@ -9182,10 +9018,6 @@ apf.Presentation = function(){
pNode = this.$pHtmlNode;
if (!tag)
tag = "main";
//if (!aml)
//aml = this.$aml;
tag = tag.toLowerCase(); //HACK: make components case-insensitive
this.$getNewContext(tag);
var oExt = this.$getLayoutNode(tag);
@ -12206,124 +12038,6 @@ apf.window = new apf.window();
apf.runGecko = function(){
if (apf.runNonIe)
apf.runNonIe();
/* ***************************************************************************
XSLT
****************************************************************************/
//XMLDocument.selectNodes
HTMLDocument.prototype.selectNodes = XMLDocument.prototype.selectNodes = function(sExpr, contextNode) {
try {
var oResult = this.evaluate(sExpr, (contextNode || this),
this.createNSResolver(this.documentElement),
7, null); //XpathResult.ORDERED_NODE_ITERATOR_TYPE
}
catch (ex) {
var msg = ex.message;
if (ex.code == ex.INVALID_EXPRESSION_ERR)
msg = msg.replace(/the expression/i, "'" + sExpr + "'");
throw new Error(ex.lineNumber, "XPath error: " + msg);
}
var nodeList = new Array(oResult.snapshotLength);
nodeList.expr = sExpr;
for (var i = nodeList.length - 1; i >= 0; i--)
nodeList[i] = oResult.snapshotItem(i);
return nodeList;
};
//Element.selectNodes
Text.prototype.selectNodes =
Attr.prototype.selectNodes =
Element.prototype.selectNodes = function(sExpr) {
return this.ownerDocument.selectNodes(sExpr, this);
};
//XMLDocument.selectSingleNode
HTMLDocument.prototype.selectSingleNode =
XMLDocument.prototype.selectSingleNode = function(sExpr, contextNode) {
try {
var oResult = this.evaluate(sExpr, (contextNode || this),
this.createNSResolver(this.documentElement),
9, null); //XpathResult.FIRST_ORDERED_NODE_TYPE
}
catch (ex) {
var msg = ex.message;
if (ex.code == ex.INVALID_EXPRESSION_ERR)
msg = msg.replace(/the expression/i, "'" + sExpr + "'");
throw new Error(ex.lineNumber, "XPath error: " + msg);
}
return oResult.singleNodeValue;
};
//Element.selectSingleNode
Text.prototype.selectSingleNode =
Attr.prototype.selectSingleNode =
Element.prototype.selectSingleNode = function(sExpr) {
return this.ownerDocument.selectSingleNode(sExpr, this);
};
var serializer = new XMLSerializer();
var o = document.createElement("div");
apf.insertHtmlNodes = function(nodeList, htmlNode, beforeNode, s) {
var frag, l, node, i;
if (nodeList) {
frag = document.createDocumentFragment();
for (i = nodeList.length - 1; i >= 0; i--) {
node = nodeList[i];
frag.insertBefore(node, frag.firstChild);
}
}
o.innerHTML = typeof s == "string" ? s : apf.html_entity_decode(serializer.serializeToString(frag))
.replace(/<([^>]+)\/>/g, "<$1></$1>");
frag = document.createDocumentFragment();
for (i = 0, l = o.childNodes.length; i < l; i++) {
node = o.childNodes[0];
frag.appendChild(node);
}
if (beforeNode)
htmlNode.insertBefore(frag, beforeNode);
htmlNode.appendChild(frag);
};
apf.insertHtmlNode = function(xmlNode, htmlNode, beforeNode, s) {
if (htmlNode.nodeType != 11 && !htmlNode.style)
return htmlNode.appendChild(xmlNode);
if (!s) {
s = apf.html_entity_decode(xmlNode.serialize
? xmlNode.serialize(true)
: ((xmlNode.nodeType == 3 || xmlNode.nodeType == 4 || xmlNode.nodeType == 2)
? xmlNode.nodeValue
: serializer.serializeToString(xmlNode)));
}
o.innerHTML = s.replace(/<([^>]+)\/>/g, "<$1></$1>");
if (beforeNode)
htmlNode.insertBefore(o.firstChild, beforeNode);
else
htmlNode.appendChild(o.firstChild);
return beforeNode ? beforeNode.previousSibling : htmlNode.lastChild;
};
/* ******** Error Compatibility **********************************************
Error Object like IE
****************************************************************************/
function Error(nr, msg) {
this.message = msg;
this.nr = nr;
}
apf.getHtmlLeft = function(oHtml) {
return (oHtml.offsetLeft
@ -12354,17 +12068,37 @@ apf.runGecko = function(){
- (2 * (parseInt(apf.getStyle(p, "borderTopWidth")) || 0))
- (parseInt(apf.getStyle(p, "borderBottomWidth")) || 0));
};
apf.getBorderOffset = function(oHtml) {
return [-1 * (parseInt(apf.getStyle(oHtml, "borderLeftWidth")) || 0),
-1 * (parseInt(apf.getStyle(oHtml, "borderTopWidth")) || 0)];
};
};
apf.insertHtmlNodes = function(nodeList, htmlNode, beforeNode, s) {
var frag, l, node, i;
if (nodeList) {
frag = document.createDocumentFragment();
for (i = nodeList.length - 1; i >= 0; i--) {
node = nodeList[i];
frag.insertBefore(node, frag.firstChild);
}
}
if (beforeNode)
htmlNode.insertBefore(frag, beforeNode);
else
htmlNode.appendChild(frag);
};
apf.insertHtmlNode = function(xmlNode, htmlNode, beforeNode, s) {
xmlNode = xmlNode.cloneNode(true);
if (beforeNode)
htmlNode.insertBefore(xmlNode, beforeNode);
else
htmlNode.appendChild(xmlNode);
return xmlNode;
};
@ -12372,59 +12106,33 @@ apf.runGecko = function(){
* Compatibility layer for Internet Explorer browsers.
* @private
*/
apf.runIE = function(){
apf.runWebkit();
// return;
var silent
HTMLDocument.prototype.sn = XMLDocument.prototype.sn = HTMLDocument.prototype.sn || HTMLDocument.prototype.selectNodes;
HTMLDocument.prototype.selectNodes = XMLDocument.prototype.selectNodes = function(sExpr, contextNode) {
if (/^\w+$/.test(sExpr) && contextNode) {
var all = contextNode.querySelectorAll(sExpr);
var nodeList = new Array(all.length);
for (var i = nodeList.length - 1; i >= 0; i--)
nodeList[i] = all[i];
return nodeList;
}
silent || console.log(sExpr, contextNode)
return this.sn(sExpr, contextNode)
};
HTMLDocument.prototype.sns = XMLDocument.prototype.sns = HTMLDocument.prototype.sns || HTMLDocument.prototype.selectSingleNode
HTMLDocument.prototype.selectSingleNode = XMLDocument.prototype.selectSingleNode = function(sExpr, contextNode) {
var n = findNode(contextNode, sExpr);
if (sExpr.lastIndexOf("descendant-or-self::node()[@") == 0)
n = contextNode.querySelector(sExpr.replace("descendant-or-self::node()[@", "*["));
silent = true
try {var m = this.sns(sExpr, contextNode); } catch(e) {}
silent = !true
if (n != m && m) {
n = m
findNode(contextNode, sExpr);
}
return n
};
apf.insertHtmlNodes = function(nodeList, htmlNode, beforeNode, s) {
var node, frag, a, i, l;
if (nodeList) {
frag = document.createElement("div");
a = [], i = 0, l = nodeList.length;
for (; i < l; i++) {
if (!(node = nodeList[i])) continue;
frag.appendChild(node);
}
}
(beforeNode || htmlNode).insertAdjacentHTML(beforeNode
? "beforebegin"
: "beforeend", s || (frag ? frag.innerHTML : "")
.replace(/<([^>]+)\/>/g, "<$1></$1>"));
};
apf.runIE = function() { apf.runWebkit() };
//XMLDocument.selectNodes
HTMLDocument.prototype.selectNodes = XMLDocument.prototype.selectNodes = function(sExpr, contextNode) {
return findNodes(contextNode, sExpr);
};
//Element.selectNodes
Text.prototype.selectNodes =
Attr.prototype.selectNodes =
Element.prototype.selectNodes = function(sExpr) {
return findNodes(this, sExpr);
};
//XMLDocument.selectSingleNode
HTMLDocument.prototype.selectSingleNode =
XMLDocument.prototype.selectSingleNode = function(sExpr, contextNode) {
return findNode(contextNode, sExpr);
};
//Element.selectSingleNode
Text.prototype.selectSingleNode =
Attr.prototype.selectSingleNode =
Element.prototype.selectSingleNode = function(sExpr) {
return findNode(this, sExpr);
};
@ -12717,116 +12425,6 @@ apf.runNonIe = function (){
* @private
*/
apf.runWebkit = function(){
if (XMLHttpRequest.prototype.sendAsBinary === undefined) {
if (window.ArrayBuffer) {
/**
* Binary support for Chrome 7+ which implements [ECMA-262] typed arrays
*
* For more information, see <http://www.khronos.org/registry/typedarray/specs/latest/>.
*/
XMLHttpRequest.prototype.sendAsBinary = function(string) {
var bytes = Array.prototype.map.call(string, function(c) {
return c.charCodeAt(0) & 0xff;
});
this.send(new Uint8Array(bytes).buffer);
};
}
}
HTMLDocument.prototype.selectNodes = XMLDocument.prototype.selectNodes = function(sExpr, contextNode) {
if (sExpr.substr(0,2) == "//")
sExpr = "." + sExpr;
try {
var oResult = this.evaluate(sExpr, (contextNode || this),
this.createNSResolver(this.documentElement),
7, null);//XPathResult.ORDERED_NODE_SNAPSHOT_TYPE
}
catch (ex) {
try {
var oResult = this.evaluate("child::" + sExpr, (contextNode || this),
this.createNSResolver(this.documentElement),
7, null);//XPathResult.ORDERED_NODE_SNAPSHOT_TYPE
}
catch (ex) {
throw new Error("XPath error: " + ex.message + "\nLine: " + ex.lineNumber + "\nExpression: '" + sExpr + "'");
}
}
var nodeList = new Array(oResult.snapshotLength);
nodeList.expr = sExpr;
for (var i = nodeList.length - 1; i >= 0; i--)
nodeList[i] = oResult.snapshotItem(i);
return nodeList;
};
//Element.selectNodes
Text.prototype.selectNodes =
Attr.prototype.selectNodes =
Element.prototype.selectNodes = function(sExpr) {
return this.ownerDocument.selectNodes(sExpr, this);
};
//XMLDocument.selectSingleNode
HTMLDocument.prototype.selectSingleNode = XMLDocument.prototype.selectSingleNode = function(sExpr, contextNode) {
var nodeList = this.selectNodes("(" + sExpr + ")[1]", contextNode ? contextNode : null);
return nodeList.length > 0 ? nodeList[0] : null;
};
//Element.selectSingleNode
Text.prototype.selectSingleNode =
Attr.prototype.selectSingleNode =
Element.prototype.selectSingleNode = function(sExpr) {
return this.ownerDocument.selectSingleNode(sExpr, this);
};
var serializer = new XMLSerializer();
apf.insertHtmlNodes = function(nodeList, htmlNode, beforeNode, s) {
var node, frag, a, i, l;
if (nodeList) {
frag = document.createDocumentFragment();
a = [], i = 0, l = nodeList.length;
for (; i < l; i++) {
if (!(node = nodeList[i])) continue;
frag.appendChild(node);
}
}
(beforeNode || htmlNode).insertAdjacentHTML(beforeNode
? "beforebegin"
: "beforeend", s || apf.html_entity_decode(serializer.serializeToString(frag))
.replace(/<([^>]+)\/>/g, "<$1></$1>"));
};
apf.insertHtmlNode = function(xmlNode, htmlNode, beforeNode, s) {
if (htmlNode.nodeType != 11 && !htmlNode.style)
return htmlNode.appendChild(xmlNode);
if (!s) {
s = apf.html_entity_decode(xmlNode.serialize
? xmlNode.serialize(true)
: ((xmlNode.nodeType == 3 || xmlNode.nodeType == 4 || xmlNode.nodeType == 2)
? xmlNode.nodeValue
: serializer.serializeToString(xmlNode)));
}
(beforeNode || htmlNode).insertAdjacentHTML(beforeNode
? "beforebegin"
: "beforeend", s.match(/<(IMG|LINK|META|BR|HR|BASEFONT)[^\/>]*/i) ? s.replace(/<([^>]+)\/>/g, "<$1 />") : s.replace(/<([^>]+)\/>/g, "<$1></$1>"));
return beforeNode ? beforeNode.previousSibling : htmlNode.lastChild;
};
apf.getHtmlLeft = function(oHtml) {
return oHtml.offsetLeft;
};
@ -12855,10 +12453,6 @@ apf.runWebkit = function(){
- (parseInt(apf.getStyle(p, "borderBottomWidth")) || 0));
};
apf.getBorderOffset = function(oHtml) {
return [0,0];
};
if (apf.runNonIe)
apf.runNonIe();
};

View File

@ -24,27 +24,6 @@ define(function(require, module, exports) {
loaded = true;
apf.uiLoaded = true;
// Before we have Proxy Objects, we'll extend the apf objects with the needed api
apf.Class.prototype.on = function() {
this.addEventListener.apply(this, arguments);
};
apf.Class.prototype.once = function(name, listener) {
var _self = this;
function callback() {
listener.apply(this, arguments);
_self.removeEventListener(name, callback);
}
this.addEventListener(name, callback);
};
apf.Class.prototype.emit = apf.Class.prototype.dispatchEvent;
apf.Class.prototype.off = apf.Class.prototype.removeEventListener;
Object.defineProperty(apf.Class.prototype, '$html', {
get: function() { return this.$int || this.$container || this.$ext; },
enumerable: false,
configurable: false
});
apf.preProcessCSS = insertLess;
// Load a basic document into APF