Не могу поверить, насколько сложно это найти, но даже в документации разработчиков Google я не могу найти его. Мне нужно иметь возможность динамически, только с помощью JavaScript вставлять AdSense. Я также посмотрел на StackOverflow, и некоторые другие спрашивали об этом, но не ответили. Надеюсь, это будет лучшее объяснение и будет несколько ответов.
По сути, пользователь вставляет мой скрипт, позволяет называть его my.js
(в данный момент не могу сказать, что это конкретно). мой. js
загружается, а в my.js
на их странице отображаются некоторые встроенные носители, тогда мне нужно как-то добавить сгенерированный HTML из:
Внутри определенного PS Нет библиотек, таких как jQuery, и я не могу вставить HTML на страницу, если он не используется через JavaScript, и его нужно вставить в конкретный
Простой метод, используемый для асинхронной загрузки скрипта 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