Es ist zwar kein Sonntag ;-)
Java Script Sharepoint
Das Objekt _spBodyOnLoadFunctionNames identifiziert man ja ziemlich schnell und die passende Methode push zum Registrieren einer Funktion beim OnLoad-Event auch.
Fragt man sich, was man sinnvolles damit machen kann
Kategorie Das Objekt _spBodyOnLoadFunctionNames identifiziert man ja ziemlich schnell und die passende Methode push zum Registrieren einer Funktion beim OnLoad-Event auch.
Fragt man sich, was man sinnvolles damit machen kann
ont size=2 face="sans-serif">Ich habe auf allen meinen Masterpages ein
Script eingebunden, welches die Methode initTagStore registiert:
_spBodyOnLoadFunctionNames.push("initTagStore");
Das bringt natürlich nicht viel, wenn man nicht weiß was die macht
Hier der Code:
function initTagStore() {
add2TagStore("input");
add2TagStore("select");
}
Besser?
Also die Methode add2TagStore hat die Aufgabe die aktuelle Seite nach HTML-Tags zu parsen und später für einen "schnellen" Zugriff zur Verfügung zu stellen.
In diesem Fall Eingabefelder, Radiobuttons usw. und Comboboxen bzw. Listen.
Für was???
Das Sharepoint ja auf ASP.NET basiert werden für die Eingabecontrols HTML-Fragmente der folgenden Art generiert ->
input name="ctl00$m$g_7f68a838_658b_4830_bf1a_dc88a74cd138$ctl00$ctl04$ctl00$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_7f68a838_658b_4830_bf1a_dc88a74cd138_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Betreff" class="ms-long"
Fett markiert sind die Teile, welche mich interessieren, von welchem Typ ist das Eingabe-Control (hier ein Textfield) und wie ist der Displayname (hier Betreff).
Also was liegt näher als add2TagStore wie folgt zu implementieren:
var tagStore = new Array();
function add2TagStore(xTag) {
var tags = document.getElementsByTagName(xTag);
for(var i = 0; i < tags.length;i++) {
var tag = tags[i];
if (tag.title!=undefined) {
tagStore[xTag+"$"+tag.title+"$"] = tag;
var identifier = tag.name.split('$');
tagStore[xTag+"$"+tag.title+"$"+identifier[identifier.length-1 = tag;
}
}
}
Also ich hole mir alle HTML-Elemente von einem bestimmten Typ (z.B. Input).
Schaue nach, ob diese einen Title haben -> dann ist die Wahrscheinlichkeit hoch, dass sie ein Sharepoint-Eingabefeld sind.
Und werfe diese zweimal in das Array tagStore einmal mit Typ (z.B. TextField, Lookup usw.)
So jetzt ist alles drin!!! Was macht man dann damit?
Angenommen ich mächte in Java Script irgendwas mit dem Feld Betreff machen, dann wäre es schön eine Methode der Art zu haben....
Hole mir das Eingabefeld Betreff
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var result = tagStoreagName+"$"+title+"$"+identifier
if (result==undefined) {
result = tagStoreagName+"$"+title+"$"
}
return (result==undefined)?null:result;
}
Zugriff wahlweise
getTagFromIdentifierAndTitle("input","TextField","Betreff")
bzw.
getTagFromIdentifierAndTitle("input","","Betreff")
Gruß und schönes Wochenende JJR
P.S.: oder wie greife ich auch die Formular-Felder im Sharepoint mittels Java-Script zu ?!
_spBodyOnLoadFunctionNames.push("initTagStore");
Das bringt natürlich nicht viel, wenn man nicht weiß was die macht
Hier der Code:
function initTagStore() {
add2TagStore("input");
add2TagStore("select");
}
Besser?
Also die Methode add2TagStore hat die Aufgabe die aktuelle Seite nach HTML-Tags zu parsen und später für einen "schnellen" Zugriff zur Verfügung zu stellen.
In diesem Fall Eingabefelder, Radiobuttons usw. und Comboboxen bzw. Listen.
Für was???
Das Sharepoint ja auf ASP.NET basiert werden für die Eingabecontrols HTML-Fragmente der folgenden Art generiert ->
input name="ctl00$m$g_7f68a838_658b_4830_bf1a_dc88a74cd138$ctl00$ctl04$ctl00$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_m_g_7f68a838_658b_4830_bf1a_dc88a74cd138_ctl00_ctl04_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Betreff" class="ms-long"
Fett markiert sind die Teile, welche mich interessieren, von welchem Typ ist das Eingabe-Control (hier ein Textfield) und wie ist der Displayname (hier Betreff).
Also was liegt näher als add2TagStore wie folgt zu implementieren:
var tagStore = new Array();
function add2TagStore(xTag) {
var tags = document.getElementsByTagName(xTag);
for(var i = 0; i < tags.length;i++) {
var tag = tags[i];
if (tag.title!=undefined) {
tagStore[xTag+"$"+tag.title+"$"] = tag;
var identifier = tag.name.split('$');
tagStore[xTag+"$"+tag.title+"$"+identifier[identifier.length-1 = tag;
}
}
}
Also ich hole mir alle HTML-Elemente von einem bestimmten Typ (z.B. Input).
Schaue nach, ob diese einen Title haben -> dann ist die Wahrscheinlichkeit hoch, dass sie ein Sharepoint-Eingabefeld sind.
Und werfe diese zweimal in das Array tagStore einmal mit Typ (z.B. TextField, Lookup usw.)
So jetzt ist alles drin!!! Was macht man dann damit?
Angenommen ich mächte in Java Script irgendwas mit dem Feld Betreff machen, dann wäre es schön eine Methode der Art zu haben....
Hole mir das Eingabefeld Betreff
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var result = tagStoreagName+"$"+title+"$"+identifier
if (result==undefined) {
result = tagStoreagName+"$"+title+"$"
}
return (result==undefined)?null:result;
}
Zugriff wahlweise
getTagFromIdentifierAndTitle("input","TextField","Betreff")
bzw.
getTagFromIdentifierAndTitle("input","","Betreff")
Gruß und schönes Wochenende JJR
P.S.: oder wie greife ich auch die Formular-Felder im Sharepoint mittels Java-Script zu ?!