📄 atlascompat_0.08.js
字号:
oEvent._FixOffset = null;
m_Capturing = null;
ev.stopPropagation();
ev.preventDefault();
}
}
function StopEvent(ev)
{
ev.stopPropagation();
ev.preventDefault();
}
function ValidateButton(ev)
{
if (ev.button!=0) // Fix Firefox bug with right click button firing onclick event
ev.stopPropagation();
}
w.document.addEventListener("click",ValidateButton,true)
w.HTMLElement.prototype.setCapture = function(ev)
{
m_Capturing = this;
document.addEventListener("mousemove",CaptureMouse,true);
document.addEventListener("mouseover",StopEvent,true);
document.addEventListener("mouseout",StopEvent,true);
document.addEventListener("mouseenter",StopEvent,true);
document.addEventListener("mouseleave",StopEvent,true);
document.addEventListener("mouseup",ReleaseMouse,true);
};
w.HTMLElement.prototype.releaseCapture = function()
{
m_Capturing = null;
document.removeEventListener("mousemove",CaptureMouse,true);
document.removeEventListener("mouseover",StopEvent,true);
document.removeEventListener("mouseout",StopEvent,true);
document.removeEventListener("mouseenter",StopEvent,true);
document.removeEventListener("mouseleave",StopEvent,true);
document.removeEventListener("mouseup",ReleaseMouse,true);
};
w.HTMLElement.prototype.insertAdjacentElement = function (sWhere,oElement)
{
switch (sWhere.toLowerCase())
{
case "beforebegin":
this.parentNode.insertBefore(oElement,this);
break;
case "beforeend":
this.appendChild(oElement);
break;
case "afterbegin":
this.insertBefore(oElement,this.firstChild);
break;
case "afterend":
if (this.nextSibling)
this.parentNode.insertBefore(oElement,this.nextSibling);
else
this.parentNode.appendChild(oElement);
break;
default:
throw "Invalid Argument"; // TODO - see if I can get the error number set to 201 (match IE)
break;
}
}
function parseFilter(v)
{
// Cheap parse (only look for key word) - allows opacity support
v = v.replace(" ","");
var matchString = "DXImageTransform.Microsoft.Alpha(opacity=";
var opacityIndex = v.indexOf(matchString)
if (opacityIndex >0)
{
var close = v.indexOf(")",opacityIndex);
if (close==-1)
close = v.indexOf(",",opacityIndex);
return ("." + v.substring(opacityIndex+matchString.length,close));
}
else
return "";
}
// IE CSS Properties
cssProto.__proto__ =
{
get pixelLeft() {return parseInt(this.left) || 0;},
set pixelLeft(v) {this.left = v + "px";},
get pixelHeight() {return parseInt(this.height) || 0;},
set pixelHeight(v) {this.height = v + "px";},
get pixelTop() {return parseInt(this.top) || 0;},
set pixelTop(v) {this.top = v + "px";},
get pixelWidth() {return parseInt(this.width) || 0;},
set pixelWidth(v) {this.width = v + "px";},
set filter(v) {this.opacity = parseFilter(v)},
get cssText() {
var s = "";
for (var j=0;j<this.cssRules.length;j++)
s += this.cssRules[j].cssText;
return s;
},
__proto__ : cssProto.__proto__
}
elementProto.__proto__ = {
get parentElement() {return GetNonTextNode(this.parentNode)},
set onfilterchange(v) {this.filters.onfilterchange = v},
get onfilterchange() {return this.filters.onfilterchange},
get innerText() {
try
{return this.textContent}
catch(ex)
{
var str = "";
for (var i=0;i<this.childNodes.length;i++)
{
if (this.childNodes[i].nodeType==3)
str += this.childNodes[i].textContent;
}
return str;
}
},
set innerText(v) {var n = document.createTextNode(v);this.innerHTML = "";this.appendChild(n);},
get currentStyle() {return new CurrentStyle(this)},
get text() {return this.textContent},
__proto__ : elementProto.__proto__
}
function selectSingleNode(d,v,c)
{
v+="[1]";
var nl = selectNodes(d,v,c);
if (nl.length>0)
return nl[0];
else
return null;
}
function selectNodes(d,v,c)
{
var oResult = d.evaluate(v, c,
d.createNSResolver(d.documentElement),
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var nodeList = new Array();
for(i=0;i<oResult.snapshotLength;i++)
nodeList.push(oResult.snapshotItem(i));
return nodeList;
}
w.XMLDocument.prototype.selectNodes = function(v)
{
return selectNodes(this,v,this);
};
w.Element.prototype.selectNodes = function(v)
{
var scope = this.ownerDocument;
if(scope.selectNodes)
return selectNodes(scope,v, this);
else
return null;
};
w.XMLDocument.prototype.selectSingleNode = function(v)
{
return selectSingleNode(this,v,null);
};
w.Element.prototype.selectSingleNode = function(v)
{
var scope = this.ownerDocument;
if (scope.selectSingleNode)
return selectSingleNode(scope,v, this);
else
return null; // Only supported on XML nodes
};
function QuickLoc (el)
{
var c = {x : 0, y : 0};
while (el) {
c.x += el.offsetLeft;
c.y += el.offsetTop;
el = el.offsetParent;
}
return c;
}
// IE Event Object
eventProto.__proto__ = {
get srcElement() { var n = this._FixOffset; if (!n) {n = GetNonTextNode(this.target)};return n;},
set cancelBubble(v) { if (v) this.stopPropagation()},
get offsetX() {return window.pageXOffset + this.clientX - ((this._FixOffset) ? QuickLoc(this._FixOffset).x : QuickLoc(this.srcElement).x);},
get offsetY() {return window.pageYOffset + this.clientY - ((this._FixOffset) ? QuickLoc(this._FixOffset).y : QuickLoc(this.srcElement).y);},
get x() {return this.offsetX},
get y() {return this.offsetY},
set returnValue(v) {if (!v) {this.preventDefault()}; this.cancelDefault = v;return v},
get returnValue() {return this.cancelDefault},
get fromElement() {
var n;
if (this.type == "mouseover")
n = this.relatedTarget;
else if (this.type == "mouseout")
n = this.target;
return GetNonTextNode(n);
},
get toElement() {
var n =null;
var ex;
try
{
if (this.type == "mouseout")
n = this.relatedTarget;
else if (this.type == "mouseover")
n = this.target;
}
catch(ex){}
return GetNonTextNode(n);
},
__proto__:eventProto.__proto__};
}
// TODO - Needs thorough testing (especially timing related tests)
Web.Browser._Private.MozillaModal = function(sURL,oArguments,sFeatures,fnCallback)
{
if (!sFeatures) sFeatures = "";
sFeatures = sFeatures.removeSpaces();
var featureList = sFeatures.split(",");
sFeatures = "";
var bCenter = bNoCenter = false;
var w=h=0;
for (var i=0;i<featureList.length;i++)
{
var feature = featureList[i].split(":");
var k = feature[0].toLowerCase();
var v = feature[1];
switch (k)
{
case "dialogheight": s+="height=" + v; w=v;break;
case "dialogwidth": s+="width=" + v; h=v;break;
case "dialogtop": s+="top=" + v; bNoCenter = true; break;
case "dialogleft": s+="left=" + v; bNoCenter = true; break;
case "resizable": s+="resizable=" + v; break;
case "status": s+="status=" + v; break;
case "center": bCenter = true; break;
}
if (k!="center") s+=",";
}
if (bCenter && (!bNoCenter) && Web.Conversion)
{
if (w!=0) w = Web.Conversion.CoerceInt(w); else w=300;
if (h!=0) h = Web.Conversion.CoerceInt(h); else h=300;
if (w!="" || h!="")
{
s+="screenX=" + ((screen.availHeight-h)/2) + ",";
s+="screenY=" + ((screen.availWidth-w)/2);
}
}
var mWin = window.open(sURL,"",s);
Web.Browser._Private.MozillaCompat(mWin);
mWin.dialogArguments = oArguments;
resetModal = function(ev)
{
if (mWin && !mWin.closed)
{
ev.stopPropagation();
mWin.focus()
}
}
var rValue = "";
grabReturn = function()
{
if (mWin && !mWin.closed)
{
rValue = mWin.returnValue;
setTimeout(CheckClose,0); // Test timer
}
}
CheckClose = function()
{
if (mWin.closed)
{
if (fnCallback)
fnCallback(rValue);
window.removeEventListener("focus",resetModal,true);
}
}
hookEvents = function()
{
mWin.onunload = grabReturn; //("onunload",grabReturn,true);
window.addEventListener("focus",resetModal,true);
}
setTimeout(hookEvents,0) // Need to test timing of this (e.g., slow connection)
}
if (Web.Browser.isMozilla()) // Can only be true if compat library is installed and mozilla
{
Web.Browser.AttachMozillaCompatibility(window);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -