Ahoy,
für ein kleines Projekt benötige ich derzeit die Möglichkeit, bestimmte Elemente im DOM im Nachhinein wieder identifizieren zu können. Das komplette Element abspeichern ist nicht möglich. Ebenfalls haben Elemente nicht immer IDs oder Namen. Auszugehen ist jedoch davon, dass Sie immer den selben Inhalt haben werden. Um die Elemente nun wieder zu finden, habe ich mir überlegt, ermittel ich einen Fingerprint oder Hashwert, anhand dessen Sie im DOM wieder zu finden sind. Ach ja, und MD5 ist schlicht zu lahmarschig (gefühl ca. 4 mal langsamer).
Ich hab hier mal eine rudimentäre Funktion geschrieben. Was haltet ihr davon? Anregungen? Kritik? Ach, und wer Sie braucht: Bitte, lizensiert unter der GPL
für ein kleines Projekt benötige ich derzeit die Möglichkeit, bestimmte Elemente im DOM im Nachhinein wieder identifizieren zu können. Das komplette Element abspeichern ist nicht möglich. Ebenfalls haben Elemente nicht immer IDs oder Namen. Auszugehen ist jedoch davon, dass Sie immer den selben Inhalt haben werden. Um die Elemente nun wieder zu finden, habe ich mir überlegt, ermittel ich einen Fingerprint oder Hashwert, anhand dessen Sie im DOM wieder zu finden sind. Ach ja, und MD5 ist schlicht zu lahmarschig (gefühl ca. 4 mal langsamer).
Ich hab hier mal eine rudimentäre Funktion geschrieben. Was haltet ihr davon? Anregungen? Kritik? Ach, und wer Sie braucht: Bitte, lizensiert unter der GPL
PHP-Code:
function hash(Source) {
var HashBase = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
var WorkingSource = Source;
var Hash = '';
var Counter = 0;
while((WorkingSource.length % 32) != 0) {
if(Counter > WorkingSource.length) {
Counter = 0;
}
WorkingSource = WorkingSource + WorkingSource.substr(Counter, 1);
Counter++;
}
while((WorkingSource.length % 32) != 0) {
WorkingSource = WorkingSource.substr(0, WorkingSource.length - 1);
}
var CharsPerPart = WorkingSource.length / 32;
for(var i = 0; i < 32; i++) {
var SubPart = WorkingSource.substr(i*CharsPerPart, CharsPerPart);
var PartCode = 0;
for(var j = 0; j < SubPart.length; j++) {
PartCode = PartCode + HashBase.indexOf(SubPart.substr(j, 1));
}
if(i != 0) {
PartCode = PartCode*i;
}
PartCode = PartCode + HashBase.indexOf(Hash.length, 1) * Source.length;
while(PartCode > HashBase.length) {
PartCode = PartCode - HashBase.length;
}
while(PartCode < 0) {
PartCode++;
}
if(HashBase.substr(PartCode, 1) == 'undefined') {
Hash = Hash + HashBase.substr(i, 1);
} else {
Hash = Hash + HashBase.substr(PartCode, 1);
}
}
return Hash;
}
Kommentar