Динамическая вставка AdSense с помощью JavaScript

Не могу поверить, насколько сложно это найти, но даже в документации разработчиков Google я не могу найти его. Мне нужно иметь возможность динамически, только с помощью JavaScript вставлять AdSense. Я также посмотрел на StackOverflow, и некоторые другие спрашивали об этом, но не ответили. Надеюсь, это будет лучшее объяснение и будет несколько ответов.

По сути, пользователь вставляет мой скрипт, позволяет называть его my.js (в данный момент не могу сказать, что это конкретно). мой. js загружается, а в my.js на их странице отображаются некоторые встроенные носители, тогда мне нужно как-то добавить сгенерированный HTML из:



Внутри определенного

(или любой другой) элемент. Есть идеи?

PS Нет библиотек, таких как jQuery, и я не могу вставить HTML на страницу, если он не используется через JavaScript, и его нужно вставить в конкретный

, который я назвал (я используя Sizzle для моей библиотеки JS, если это помогает)

28
задан Oscar Godson 1 June 2011 в 07:37
поделиться

1 ответ

Простой метод, используемый для асинхронной загрузки скрипта AdSense, предлагаемый другими ответами, не сработает, потому что Google использует document.write() внутри скрипта AdSense. document.write() работает только во время создания страницы , и к тому времени, когда асинхронно загруженный скрипт выполняется, создание страницы уже будет завершено.

Чтобы это работало, вам нужно перезаписать document.write(), чтобы при вызове сценария AdSense вы могли самостоятельно управлять DOM. Вот пример:

<script>
window.google_ad_client = "123456789";
window.google_ad_slot = "123456789";
window.google_ad_width = 200;
window.google_ad_height = 200;

// container is where you want the ad to be inserted
var container = document.getElementById('ad_container');
var w = document.write;
document.write = function (content) {
    container.innerHTML = content;
    document.write = w;
};

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://pagead2.googlesyndication.com/pagead/show_ads.js';
document.body.appendChild(script);
</script>

В этом примере сначала кэшируется встроенная функция document.write() в локальной переменной. Затем он перезаписывает document.write() и внутри него использует innerHTML для внедрения HTML-контента, который Google отправит на document.write(). Как только это будет сделано, он восстанавливает нативную функцию document.write().

Этот метод был заимствован здесь: http://blog.figmentengine.com/2011/08/google-ads-async-asynchronous.html

20
ответ дан 28 November 2019 в 03:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: