---
title: JavaScript Dosya Örneği
description: ikas Storefront Olayları için kapsamlı JavaScript örneği
---

## JavaScript Dosya Örneği

```jsx
function CustomEventHandler() {
  const EVENT_HANDLER_ID = 'custom_handler_' + Date.now();
  
  function init() {
    try {
      const myScript = document.currentScript;
      const queryParams = new URLSearchParams('?' + myScript.src.split('?')[1]);
      const apiKey = queryParams.get('publicApiKey');
      
      if (!apiKey) {
        console.error('API Key is required');
        return;
      }

      // Üçüncü parti scripti yükle
      loadExternalScript(publicApiKey);

      // IkasEvents'e abone ol
      window.IkasEvents && 
        window.IkasEvents.subscribe({
          id: EVENT_HANDLER_ID,
          callback: handleIkasEvent,
        });
    } catch (err) {
      console.error('Initialization error:', err);
    }
  }

  // Üçüncü parti script yükleme fonksiyonu
  function loadExternalScript(publicApiKey) {
    const script = document.createElement('script');
    script.src = `https://external-service.com/script.js?key=${publicApiKey}`;
    script.async = true;
    document.head.appendChild(script);
  }

  // IkasEvents olay işleyici
  function handleIkasEvent(event) {
    const { type, data } = event;
    
    switch (type) {
      case IKAS_EVENT_TYPE.PRODUCT_VIEW:
        // Ürün görüntüleme olayını ExternalService ile işle
        window.ExternalService.trackProduct({
          productId: data.productDetail.id,
          name: data.productDetail.name,
          price: data.productDetail.price
        });
        break;

      case IKAS_EVENT_TYPE.ADD_TO_CART:
        // Sepete ekleme olayını ExternalService ile işle
        window.ExternalService.trackAddToCart({
          item: {
            id: data.item.variant.productId,
            price: data.item.finalPrice,
            quantity: data.item.quantity
          }
        });
        break;

      case IKAS_EVENT_TYPE.COMPLETE_CHECKOUT:
        // Satın alma olayını ExternalService ile işle
        window.ExternalService.trackPurchase({
          orderId: data.transaction.id,
          items: data.checkout.items.map(item => ({
            id: item.variant.productId,
            price: item.finalPrice,
            quantity: item.quantity
          }))
        });
        break;

      // Diğer olayları işle...
    }
  }

  // Uygulamayı başlat
  init();
}

// Handler'ı çalıştır
CustomEventHandler();

```