📄 common.js
字号:
if (typeof(template.name)!=='undefined' && nameTable) {
nameTable[template.name] = elt;
}
// if we wish to supply a default parent we do so here
if (typeof(template.parent)!=='undefined' && appendToParent == null) {
var newParent = template.parent;
if (String.isInstanceOfType(newParent)) {
newParent = nameTable[newParent];
}
if (newParent != null) {
appendToParent = newParent;
}
}
// properties are applied as expando values to the element
if (typeof(template.properties)!=='undefined' && template.properties != null) {
$common.applyProperties(elt, template.properties);
}
// css classes are added to the element's className property
if (typeof(template.cssClasses)!=='undefined' && template.cssClasses != null) {
$common.addCssClasses(elt, template.cssClasses);
}
// events are added to the dom element using $addHandlers
if (typeof(template.events)!=='undefined' && template.events != null) {
$addHandlers(elt, template.events);
}
// if the element is visible or not its visibility is set
if (typeof(template.visible)!=='undefined' && template.visible != null) {
this.setVisible(elt, template.visible);
}
// if we have an appendToParent we will now append to it
if (appendToParent) {
appendToParent.appendChild(elt);
}
// if we have opacity, apply it
if (typeof(template.opacity)!=='undefined' && template.opacity != null) {
$common.setElementOpacity(elt, template.opacity);
}
// if we have child templates, process them
if (typeof(template.children)!=='undefined' && template.children != null) {
for (var i = 0; i < template.children.length; i++) {
var subtemplate = template.children[i];
$common.createElementFromTemplate(subtemplate, elt, nameTable);
}
}
// if we have a content presenter for the element get it (the element itself is the default presenter for content)
var contentPresenter = elt;
if (typeof(template.contentPresenter)!=='undefined' && template.contentPresenter != null) {
contentPresenter = nameTable[contentPresenter];
}
// if we have content, add it
if (typeof(template.content)!=='undefined' && template.content != null) {
var content = template.content;
if (String.isInstanceOfType(content)) {
content = nameTable[content];
}
if (content.parentNode) {
$common.wrapElement(content, elt, contentPresenter);
} else {
contentPresenter.appendChild(content);
}
}
// return the created element
return elt;
},
prepareHiddenElementForATDeviceUpdate : function () {
/// <summary>
/// JAWS, an Assistive Technology device responds to updates to form elements
/// and refreshes its document buffer to what is showing live
/// in the browser. To ensure that Toolkit controls that make XmlHttpRequests to
/// retrieve content are useful to users with visual disabilities, we update a
/// hidden form element to ensure that JAWS conveys what is in
/// the browser. See this article for more details:
/// http://juicystudio.com/article/improving-ajax-applications-for-jaws-users.php
/// This method creates a hidden input on the screen for any page that uses a Toolkit
/// control that will perform an XmlHttpRequest.
/// </summary>
var objHidden = document.getElementById('hiddenInputToUpdateATBuffer_CommonToolkitScripts');
if (!objHidden) {
var objHidden = document.createElement('input');
objHidden.setAttribute('type', 'hidden');
objHidden.setAttribute('value', '1');
objHidden.setAttribute('id', 'hiddenInputToUpdateATBuffer_CommonToolkitScripts');
objHidden.setAttribute('name', 'hiddenInputToUpdateATBuffer_CommonToolkitScripts');
if ( document.forms[0] ) {
document.forms[0].appendChild(objHidden);
}
}
},
updateFormToRefreshATDeviceBuffer : function () {
/// <summary>
/// Updates the hidden buffer to ensure that the latest document stream is picked up
/// by the screen reader.
/// </summary>
var objHidden = document.getElementById('hiddenInputToUpdateATBuffer_CommonToolkitScripts');
if (objHidden) {
if (objHidden.getAttribute('value') == '1') {
objHidden.setAttribute('value', '0');
} else {
objHidden.setAttribute('value', '1');
}
}
}
}
// Create the singleton instance of the CommonToolkitScripts
var CommonToolkitScripts = AjaxControlToolkit.CommonToolkitScripts = new AjaxControlToolkit._CommonToolkitScripts();
var $common = CommonToolkitScripts;
// Alias functions that were moved from BlockingScripts into Common
Sys.UI.DomElement.getVisible = $common.getVisible;
Sys.UI.DomElement.setVisible = $common.setVisible;
Sys.UI.Control.overlaps = $common.overlaps;
AjaxControlToolkit._DomUtility = function() {
/// <summary>
/// Utility functions for manipulating the DOM
/// </summary>
}
AjaxControlToolkit._DomUtility.prototype = {
isDescendant : function(ancestor, descendant) {
/// <summary>
/// Whether the specified element is a descendant of the ancestor
/// </summary>
/// <param name="ancestor" type="Sys.UI.DomElement">Ancestor node</param>
/// <param name="descendant" type="Sys.UI.DomElement">Possible descendant node</param>
/// <returns type="Boolean" />
for (var n = descendant.parentNode; n != null; n = n.parentNode) {
if (n == ancestor) return true;
}
return false;
},
isDescendantOrSelf : function(ancestor, descendant) {
/// <summary>
/// Whether the specified element is a descendant of the ancestor or the same as the ancestor
/// </summary>
/// <param name="ancestor" type="Sys.UI.DomElement">Ancestor node</param>
/// <param name="descendant" type="Sys.UI.DomElement">Possible descendant node</param>
/// <returns type="Boolean" />
if (ancestor === descendant)
return true;
return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant);
},
isAncestor : function(descendant, ancestor) {
/// <summary>
/// Whether the specified element is an ancestor of the descendant
/// </summary>
/// <param name="descendant" type="Sys.UI.DomElement">Descendant node</param>
/// <param name="ancestor" type="Sys.UI.DomElement">Possible ancestor node</param>
/// <returns type="Boolean" />
return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant);
},
isAncestorOrSelf : function(descendant, ancestor) {
/// <summary>
/// Whether the specified element is an ancestor of the descendant or the same as the descendant
/// </summary>
/// <param name="descendant" type="Sys.UI.DomElement">Descendant node</param>
/// <param name="ancestor" type="Sys.UI.DomElement">Possible ancestor node</param>
/// <returns type="Boolean" />
if (descendant === ancestor)
return true;
return AjaxControlToolkit.DomUtility.isDescendant(ancestor, descendant);
},
isSibling : function(self, sibling) {
/// <summary>
/// Whether the specified element is a sibling of the self element
/// </summary>
/// <param name="self" type="Sys.UI.DomElement">Self node</param>
/// <param name="sibling" type="Sys.UI.DomElement">Possible sibling node</param>
/// <returns type="Boolean" />
var parent = self.parentNode;
for (var i = 0; i < parent.childNodes.length; i++) {
if (parent.childNodes[i] == sibling) return true;
}
return false;
}
}
AjaxControlToolkit._DomUtility.registerClass("AjaxControlToolkit._DomUtility");
AjaxControlToolkit.DomUtility = new AjaxControlToolkit._DomUtility();
AjaxControlToolkit.TextBoxWrapper = function(element) {
/// <summary>
/// Class that wraps a TextBox (INPUT type="text") to abstract-out the
/// presence of a watermark (which may be visible to the user but which
/// should never be read by script.
/// </summary>
/// <param name="element" type="Sys.UI.DomElement" domElement="true">
/// The DOM element the behavior is associated with
/// </param>
AjaxControlToolkit.TextBoxWrapper.initializeBase(this, [element]);
this._current = element.value;
this._watermark = null;
this._isWatermarked = false;
}
AjaxControlToolkit.TextBoxWrapper.prototype = {
dispose : function() {
/// <summary>
/// Dispose the behavior
/// </summary>
this.get_element().AjaxControlToolkitTextBoxWrapper = null;
AjaxControlToolkit.TextBoxWrapper.callBaseMethod(this, 'dispose');
},
get_Current : function() {
/// <value type="String">
/// Current value actually in the TextBox (i.e., TextBox.value)
/// </value>
this._current = this.get_element().value;
return this._current;
},
set_Current : function(value) {
this._current = value;
this._updateElement();
},
get_Value : function() {
/// <value type="String">
/// Conceptual "value" of the TextBox - its contents if no watermark is present
/// or "" if one is
/// </value>
if (this.get_IsWatermarked()) {
return "";
} else {
return this.get_Current();
}
},
set_Value : function(text) {
this.set_Current(text);
if (!text || (0 == text.length)) {
if (null != this._watermark) {
this.set_IsWatermarked(true);
}
} else {
this.set_IsWatermarked(false);
}
},
get_Watermark : function() {
/// <value type="String">
/// Text of the watermark for the TextBox
/// </value>
return this._watermark;
},
set_Watermark : function(value) {
this._watermark = value;
this._updateElement();
},
get_IsWatermarked : function() {
/// <value type="Boolean">
/// true iff the TextBox is watermarked
/// </value>
return this._isWatermarked;
},
set_IsWatermarked : function(isWatermarked) {
if (this._isWatermarked != isWatermarked) {
this._isWatermarked = isWatermarked;
this._updateElement();
this._raiseWatermarkChanged();
}
},
_updateElement : function() {
/// <summary>
/// Updates the actual contents of the TextBox according to what should be there
/// </summary>
var element = this.get_element();
if (this._isWatermarked) {
if (element.value != this._watermark) {
element.value = this._watermark;
}
} else {
if (element.value != this._current) {
element.value = this._current;
}
}
},
add_Wat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -