// עזר קצר
const $ = (id)=>document.getElementById(id);
const safeTrim = (v)=>String(v ?? "").trim();
// ולידציה
function validateSelection(s){
const errs = [];
if (!s.useGoogle && !s.useMeta && !s.useTikTok && !s.useTaboola && !s.useOutbrain) errs.push("בחר לפחות פלטפורמה אחת");
if (s.useGoogle && !s.ga4Id && !s.awId) errs.push("סימנת Google - מלא GA4 או AW");
if (s.useMeta && !s.metaId) errs.push("חסר Meta Pixel ID");
if (s.useTikTok && !s.ttId) errs.push("חסר TikTok Pixel ID");
if (s.useTaboola && !s.taboolaId) errs.push("חסר Taboola Pixel ID");
if (s.useOutbrain && !s.outbrainId) errs.push("חסר Outbrain Marketer ID");
if (s.eventType === "custom" && !s.customEventName) errs.push("נבחר Custom - חייב שם אירוע");
return errs;
}
function parseExtraJson(raw){
const txt = safeTrim(raw);
if (!txt) return {};
const obj = JSON.parse(txt);
if (!obj || typeof obj !== "object" || Array.isArray(obj)) throw new Error("JSON צריך להיות אובייקט");
return obj;
}
function eventMap(eventType, customName){
const name = (customName || "custom_event");
const m = {
pageview: { google:"page_view", meta:"PageView", tiktok:"PageView", taboola:"page_view", outbrain:"PAGE_VIEW" },
purchase: { google:"purchase", meta:"Purchase", tiktok:"CompletePayment", taboola:"purchase", outbrain:"PURCHASE" },
lead: { google:"generate_lead", meta:"Lead", tiktok:"SubmitForm", taboola:"lead", outbrain:"LEAD" },
add_to_cart:{ google:"add_to_cart", meta:"AddToCart", tiktok:"AddToCart", taboola:"add_to_cart", outbrain:"ADD_TO_CART" },
custom: { google:name, meta:customName || "CustomEvent", tiktok:customName || "Custom", taboola:customName || "custom", outbrain:(customName || "CUSTOM").toUpperCase() }
};
return m[eventType] || m.pageview;
}
// בנאי בלוקים - כאן מותר להשתמש חופשי ב- כי זה קובץ JS חיצוני
function buildGoogle(ids, evName, params){
const ga4Id = safeTrim(ids.ga4Id);
const awId = safeTrim(ids.awId);
const list = [ga4Id, awId].filter(Boolean);
if (!list.length) return "";
const loader = `
`;
const clean = {};
Object.entries(params || {}).forEach(([k,v])=>{ if (v !== "" && v !== null && v !== undefined) clean[k]=v; });
const payload = Object.keys(clean).length ? JSON.stringify(clean) : "{}";
const ev = `
`;
return loader + ev;
}
function buildMeta(ids, evName, params){
const metaId = safeTrim(ids.metaId);
if (!metaId) return "";
const hasParams = evName !== "PageView" && params && Object.keys(params).length;
return `
`;
}
function buildTikTok(ids, evName, params){
const ttId = safeTrim(ids.ttId);
if (!ttId) return "";
const extra = params && Object.keys(params).length ? ", " + JSON.stringify(params) : "";
return `
`;
}
function buildTaboola(ids, evName, params){
const taboolaId = safeTrim(ids.taboolaId);
if (!taboolaId) return "";
const extra = params && Object.keys(params).length ? ", data: " + JSON.stringify(params) : "";
return `
`;
}
function buildOutbrain(ids, evName, params){
const outbrainId = safeTrim(ids.outbrainId);
if (!outbrainId) return "";
const extra = params && Object.keys(params).length ? ", " + JSON.stringify(params) : "";
return `
`;
}
function assembleSafe(){
try{
const sel = {
useGoogle: $('useGoogle').checked,
useMeta: $('useMeta').checked,
useTikTok: $('useTikTok').checked,
useTaboola: $('useTaboola').checked,
useOutbrain:$('useOutbrain').checked,
ga4Id: safeTrim($('ga4Id').value),
awId: safeTrim($('awId').value),
metaId:safeTrim($('metaId').value),
ttId: safeTrim($('ttId').value),
taboolaId: safeTrim($('taboolaId').value),
outbrainId: safeTrim($('outbrainId').value),
eventType: $('eventType').value,
customEventName: safeTrim($('customEventName').value),
evValue: safeTrim($('evValue').value),
evCurrency: safeTrim($('evCurrency').value),
extraJson: $('extraJson').value
};
const errors = validateSelection(sel);
if (errors.length){ $('warn').textContent = errors.join(" | "); return; }
$('warn').textContent = "";
const params = parseExtraJson(sel.extraJson);
if (sel.evValue) params.value = isNaN(Number(sel.evValue)) ? sel.evValue : Number(sel.evValue);
if (sel.evCurrency) params.currency = sel.evCurrency.toUpperCase();
const names = eventMap(sel.eventType, sel.customEventName);
const blocks = [];
if (sel.useGoogle) blocks.push({ key:"google", code: buildGoogle({ga4Id:sel.ga4Id, awId:sel.awId}, names.google, params) });
if (sel.useMeta) blocks.push({ key:"meta", code: buildMeta({metaId:sel.metaId}, names.meta, params) });
if (sel.useTikTok) blocks.push({ key:"tiktok", code: buildTikTok({ttId:sel.ttId}, names.tiktok, params) });
if (sel.useTaboola) blocks.push({ key:"taboola", code: buildTaboola({taboolaId:sel.taboolaId}, names.taboola, params) });
if (sel.useOutbrain)blocks.push({ key:"outbrain",code: buildOutbrain({outbrainId:sel.outbrainId}, names.outbrain, params) });
const rendered = blocks.map(b => `/* ${b.key.toUpperCase()} */\n${b.code}`).join("\n\n");
$('output').textContent = rendered || "// לא נבחרה אף פלטפורמה";
$('output').dataset.blocks = JSON.stringify(blocks.map(b=>({key:b.key, code:b.code})));
} catch(e){
$('warn').textContent = "שגיאה: " + (e && e.message ? e.message : "אירעה תקלה לא צפויה");
}
}
// חיבור האיוונטים
document.addEventListener('DOMContentLoaded', ()=>{
$('gen').addEventListener('click', assembleSafe);
$('reset').addEventListener('click', ()=>{
['ga4Id','awId','metaId','ttId','taboolaId','outbrainId','customEventName','evValue','evCurrency','extraJson'].forEach(id=>$(id).value="");
['useGoogle','useMeta','useTikTok','useTaboola','useOutbrain'].forEach(id=>$(id).checked=false);
$('useGoogle').checked = true;
$('eventType').value='pageview';
$('warn').textContent = "";
$('output').textContent = "// התוצאה תופיע כאן אחרי יצירת קוד";
$('output').dataset.blocks = "[]";
});
$('copyAll').addEventListener('click', ()=>{
const txt = $('output').textContent;
if (!txt || txt.startsWith("//")) return;
navigator.clipboard.writeText(txt).then(()=>alert("כל הקוד הועתק"));
});
$('copyOne').addEventListener('click', ()=>{
const sel = $('singleSelect').value;
const blocks = JSON.parse($('output').dataset.blocks || "[]");
if (!blocks.length) return;
if (sel === 'all'){
const txt = $('output').textContent;
if (txt && !txt.startsWith("//")) navigator.clipboard.writeText(txt).then(()=>alert("כל הקוד הועתק"));
return;
}
const match = blocks.find(b => b.key === sel);
if (match && match.code) navigator.clipboard.writeText(`/* ${sel.toUpperCase()} */\n${match.code}`).then(()=>alert(sel + " הועתק"));
});
$('singleSelect').addEventListener('change', ()=>{
const sel = $('singleSelect').value;
const blocks = JSON.parse($('output').dataset.blocks || "[]");
if (!blocks.length) return;
$('output').textContent = sel === 'all'
? blocks.map(b=>`/* ${b.key.toUpperCase()} */\n${b.code}`).join("\n\n")
: (blocks.find(b=>b.key===sel)?.code ? `/* ${sel.toUpperCase()} */\n${blocks.find(b=>b.key===sel).code}` : "// אין בלוק מתאים");
});
});
דלג לתוכן
אנחנו משתמשים בעוגיות כדי להבטיח חוויה מיטבית באתר - תכנים מותאמים, טעינה מהירה והצעות שמתאימות בדיוק לצרכים שלך. בלחיצה על "יאללה, מאושר" ישנה הסכמה לשימוש בעוגיות בהתאם למדיניות הפרטיות שלנו.
כדי להעניק לך גלישה חלקה, להתאים עבורך תכנים אישיים ולנתח את תנועת הגולשים - אנו משתמשים בעוגיות (Cookies). לחיצה על "מאשר" מהווה הסכמה לשימוש זה בהתאם למדיניות הפרטיות שלנו.
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
האחסון הטכני או הגישה המשמשים אך ורק למטרות סטטיסטיות
כדי להעניק לך גלישה חלקה, להתאים עבורך תכנים אישיים ולנתח את תנועת הגולשים - אנו משתמשים בעוגיות (Cookies). לחיצה על "מאשר" מהווה הסכמה לשימוש זה בהתאם למדיניות הפרטיות שלנו.
האחסון הטכני או הגישה נדרשים ליצירת פרופילי משתמשים לשליחת פרסום, או למעקב אחר המשתמש באתר אינטרנט או במספר אתרים למטרות שיווק דומות.
הסכמה לעוגיות