Отслеживание кликов по Flash-объявлению - PullRequest
2 голосов
/ 09 января 2009

Если на сайте размещены сторонние флеш-объявления, возможно ли, чтобы сайт отслеживал клики на флеш? Поскольку файлы флэш-памяти не создаются сайтом, их нельзя изменить. Но сайт хочет подтвердить количество кликов, которое рекламное агентство сообщает с помощью собственного отслеживания кликов.

JavaScript onclick (или другие события мыши), прикрепленные к объекту или тегам вставки, не работают.

Последнее, что я пробовал, - это поместить плавающий невидимый элемент div на флэш-память и прикрепить к ней событие щелчка. Однако это не очень хорошо работает в IE.

Альтернативой, о которой я думаю, является использование моего собственного Flash-загрузчика SWF. Новый SWF-файл будет загружать рекламный SWF-файл в виде фильма, который он отображает. Затем, всякий раз, когда происходит щелчок, флэш-загрузчик запускает мой JS для отслеживания кликов, а затем позволяет событию клика переходить к объявлению. Это звучит возможно / возможно?

Приложение: У меня есть два вопроса о методе загрузчика:
1) Может ли флэш с домена example.com загрузить файл swf с ads.mordor.com?
2) Может ли SWF, загруженный в другой SWF, получать события кликов?

1 Ответ

1 голос
/ 09 января 2009

Ваша техника погрузчика кажется самой вменяемой. Одним из преимуществ является то, что вы можете сделать его универсальным, чтобы он мог загружать любое объявление по вашему желанию с таким количеством экземпляров на странице, сколько вам нужно, при этом всегда получая одинаковые данные о кликах. Это упрощает необходимость сбора нескольких типов данных о кликах, которые иногда генерируют разные объявления в формате Flash.

Вот код, который я получил, заранее извиняюсь за большие фрагменты.

ImportMe.as (имеет экземпляр кнопки на сцене с именем myButton)

package
{
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
    import flash.events.MouseEvent;

    public class ImportMe extends MovieClip
    {
        public function ImportMe()
        {
            myButton.addEventListener(MouseEvent.CLICK, button_OnClick);
        }

        private function button_OnClick(event:MouseEvent):void
        {
            // shifts the button right 10 pixels to prove the event fired
            myButton.x += 10;
        }
    }
}

Tester.as (загружает клип ImportMe.swf, сгенерированный из предыдущего кода)

package
{
    import flash.display.MovieClip;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.events.*;

    public class Tester extends MovieClip
    {
        public function Tester()
        {
            var request:URLRequest = new URLRequest("importme.swf");
            var loader:Loader = new Loader();
            loader.addEventListener(Event.COMPLETE, loader_OnComplete);
            loader.addEventListener(MouseEvent.CLICK, loader_OnClick);
            loader.load(request);
            addChild(loader);
        }

        private function loader_OnComplete(event:Event):void
        {
            trace("loaded");
        }

        private function loader_OnClick(event:MouseEvent):void
        {
            trace("clicked");
        }
    }
}

Единственное, что в этом примере не проверяется, это то, будет ли внешнее событие сработать до того, как внутренний клип выполнит перенаправление URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...