Si necesitas ids únicos podes generarlos mediante un seed autoincremental:
Código Javascript
:
Ver originalvar createId = (function() {
var map = {};
return function(prefix) {
prefix = prefix || 'generated';
map[prefix] = map[prefix] || 0;
var id = prefix + '-' + map[prefix]++;
// Valida que no exista un elemento con
// el mismo id
if(document.getElementById(id)) {
return createId(prefix);
}
return id;
}
})()
createId('tooltip'); // "tooltip-0"
createId('tooltip'); // "tooltip-1"
createId('tooltip'); // "tooltip-2"
createId('tooltip'); // "tooltip-3"
createId('content'); // "content-0"
createId(); // "generated-0"
Si respetás siempre la misma estructura y lógica debería respetarse. Ahora, de no ser así estarías obligado a usar algún tipo de hash sobre algo distintivo del elemento (css path o contenido).
En este caso tenés que asegurarte de que el hash sea algo cercano a único, para evitar falsos "positivos".
Un ejemplo rápido de hashing (requiere browsers que soporten ecma 262-6, para el método reduce):
Código Javascript
:
Ver originalfunction hashExample(str) {
return str.replace(/\s*/g, '').split('').reduce(function(memo, current, index) {
return memo + current.charCodeAt(0) * index;
}, 0).toString(16);
}
hashExample('perro'); // "45b"
hashExample('perro') === hashExample('perro'); // true
hashExample('gato'); // "296"
// Tu css path:
hashExample('html body div#posts div div.page div div#edit4038775 table#post4038775.tborder tbody tr td.alt1 div.smallfont'); // "6d5bf"