/**
* נגישות: מניעת מזהים כפולים — גילטק
* ----------------------------------------------------------
* מטרה: WCAG 2.0 קריטריון 4.1.1 (רמה A) — כל מזהה בעמוד ייחודי.
*
* המצב היום: הכותרת העליונה מציגה את שדה החיפוש ואת כפתור
* העגלה פעמיים (גרסת דסקטופ + גרסת מובייל), ולכן אותו מזהה
* מופיע פעמיים בכל עמוד באתר.
*
* מה הקוד עושה: משאיר את המופע הראשון כמו שהוא, ונותן לכל
* מופע כפול אחריו מזהה חדש. במקביל הוא מתקן את ההפניות אליו
* (label for, aria-controls, aria-labelledby וכו') — אבל רק
* בתוך הטופס/הווידג'ט שלו, כדי לא לפגוע במופע הראשון.
*
* הגדרות ב-WPCode:
* Code Type: JavaScript Snippet
* Location: Site Wide Footer
*
* כיבוי הסניפט מחזיר את המצב לקדמותו מיד.
*/
(function () {
'use strict';
// תכונות שיכולות להצביע על מזהה, ולכן צריכות תיקון יחד איתו
var REFS = [
[ 'label', 'for' ],
[ 'output', 'for' ],
[ '*', 'aria-controls' ],
[ '*', 'aria-labelledby' ],
[ '*', 'aria-describedby' ],
[ '*', 'aria-owns' ],
[ '*', 'aria-activedescendant' ],
[ 'input', 'list' ],
[ 'td', 'headers' ],
[ 'th', 'headers' ]
];
function uniqueId( base ) {
var n = 2;
var candidate = base + '-dup2';
while ( document.getElementById( candidate ) && n < 50 ) {
n++;
candidate = base + '-dup' + n;
}
return candidate;
}
// מעדכן הפניות מ-oldId ל-newId, אך ורק בתוך root
function retarget( oldId, newId, root ) {
for ( var r = 0; r < REFS.length; r++ ) {
var attr = REFS[ r ][ 1 ];
var nodes = root.querySelectorAll( REFS[ r ][ 0 ] + '[' + attr + ']' );
for ( var i = 0; i < nodes.length; i++ ) {
var val = nodes[ i ].getAttribute( attr );
if ( ! val ) { continue; }
var parts = val.split( /\s+/ );
var changed = false;
for ( var p = 0; p < parts.length; p++ ) {
if ( parts[ p ] === oldId ) {
parts[ p ] = newId;
changed = true;
}
}
if ( changed ) {
nodes[ i ].setAttribute( attr, parts.join( ' ' ) );
}
}
}
}
function dedupe() {
var seen = {};
var all = document.querySelectorAll( '[id]' );
for ( var i = 0; i < all.length; i++ ) {
var el = all[ i ];
var id = el.id;
if ( ! id ) { continue; }
// המופע הראשון נשאר בדיוק כמו שהוא
if ( ! seen[ id ] ) {
seen[ id ] = true;
continue;
}
var fresh = uniqueId( id );
// טווח התיקון: הטופס או הווידג'ט שמכיל את האלמנט —
// לא כל העמוד, כדי לא לגעת במופע הראשון
var scope = null;
if ( el.closest ) {
scope = el.closest( 'form, .elementor-widget, .elementor-element, nav, section' );
}
if ( ! scope ) { scope = el.parentNode || document.body; }
el.id = fresh;
retarget( id, fresh, scope );
seen[ fresh ] = true;
}
}
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', dedupe );
} else {
dedupe();
}
// ריצה שנייה — למקרה שאלמנטור מוסיף ווידג'טים אחרי טעינת הדף
window.setTimeout( dedupe, 2000 );
})();
באתר גילטק אנו משתמשים בעוגיות כדי להבטיח לך את חווית הגלישה הטובה ביותר