Динамическая вставка отслеживания конверсий Google AdWords взрывается в сафари - PullRequest
4 голосов
/ 17 июня 2011

Я работаю над одностраничным приложением, которое, вероятно, запустит более 1 конверсии за загрузку страницы.

Мне нужно запустить фрагмент конверсии Google, поэтому я предположил, что могу добавить его во время выполнения. Фрагмент выглядит примерно так:

<script type="text/javascript">
        /* <![CDATA[ */
        var google_conversion_id = XXXXXXXX;
        var google_conversion_language = "en";
        var google_conversion_format = "2";
        var google_conversion_color = "ffffff";
        var google_conversion_label = "XXXXXXXXXXXXXXX";
        var google_conversion_value = 25.00;
        /* ]]> */
        </script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
        </script>

Я использовал javascript для вставки фрагмента, когда преобразование было запущено. Я делаю это так:

function(id,url,content){
        // add script
        var script   = document.createElement("script");
        script.type  = "text/javascript";
        if(url) script.src   = url;
        if(content) script.text = content;
        var bucket = document.getElementById(id);
        bucket.appendChild(script);

        debugger;

    }

Это работает во всех браузерах, в которых я пробовал, кроме сафари.

В сафари, когда добавляется второй тег сценария, содержимое всего тега тела заменяется на Google iFrame. Весь дом на самом деле является ядерным оружием. Содержимое головы также уничтожено.

Что, черт возьми, происходит в этом скрипте Google, и как мне вставить это, чтобы все не взорвалось?!?

Обновление:

Похоже, по какой-то причине сафари не понравилось то, как я добавил скрипт. Чтобы это исправить, я добавил bucket.innerHTML = '' ниже строки debugger, и в Safari он отлично работал. К сожалению, это заставило FF 3.6 сделать то, что раньше делал сафари, и уничтожить DOM.

Чтобы сделать его еще более сложным, кажется, что AdWords отклоняет эти преобразования или что-то в этом роде, они не отображаются в конце отчета при добавлении на страницу.

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

1 Ответ

3 голосов
/ 17 июня 2011

Возможно, было бы проще вставить рекламу Google через iFrame?

Например, вот так:

<iframe src="/documents/adsense.htm" width="728px" height="90px" frameborder="0" marginwidth ="0px" marginheight="0px" scrolling="no"></iframe>

iFrame содержит:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Google Adsense</title>
<base target="_parent">
</head>
<body>
<!--insert Google Adsense Code Here-->
</body>
</html>

Google по-прежнему будет знать и отслеживать родительскую страницу.

...