Как мне создать тег обратного доступа из URL?

#javascript #redirect #ads

#javascript #перенаправление #реклама

Вопрос:

У меня есть пара рекламных сетей, которые смогли интегрировать URL-адрес обратного доступа (запрашиваемый, когда показ платной рекламы недоступен), но одна рекламная сеть может принимать только тег сценария обратного доступа, которого у меня нет.

Скрипту обратного доступа необходимо загрузить содержимое URL-адреса (изображение размером 728×90 или флэш-баннер) в себя (ему также необходимо выполнить загружаемый им Javascript). Кто-нибудь может помочь мне создать тег сценария обратного доступа?

Я пробовал это:

 <SCRIPT language="Javascript">

// loads within itself, in the 728x90 banner space

document.write("<SCR" "IPT language='Javascript' src='http://www.mydomain.com/passback.php'></SCR" "IPT>");

</SCRIPT>
  

Но получил ошибки скрипта. Есть идеи?

Комментарии:

1. @Tom Как выглядит passback.js файл?

2. Какие ошибки вы получили?

3. Ваш код (та часть, которую вы показали) в порядке. Проблемы вызывает скрипт, указанный в атрибуте src — хотите поделиться им? Кроме того, следующий вопрос января — какие ошибки скрипта вы получаете?

4. passback.php имеет ли он правильный MIME-тип?

Ответ №1:

Просто идея. Что это даст, если вы попробуете это?

 <SCRIPT language="JavaScript" type="text/javascript">

var script = document.createElement("script");
script.type = "text/javascript";  // This is for HTML 4.01 validation
script.src = "http://www.mydomain.com/passback.php";
document.getElementsByTagName("head")[0].appendChild(script);

</SCRIPT>
  

Комментарии:

1. вы не получаете ошибку из приведенного выше кода, она в другом месте

2. Я согласен с @alessioalex, эта ошибка, скорее всего, в самом вашем скрипте. Попробуйте проверить свой javascript в чем-то вроде jslint, чтобы попытаться найти недостающие точки с запятой и фигурные скобки. Я также поддержал приведенный выше ответ, поскольку это хороший метод.

3. Я тоже согласен с @alessioalex .

4. Понятно, что ошибки, которые получает автор, вызваны не его document.write... кодом — так зачем же переписывать эту часть? Это скрипт, связанный в src (или других потенциальных скриптах на странице), который вызывает всплывающие ошибки.

5. Загружаемый скрипт является тегом Adsense, и ошибка скрипта возникает, когда тег Adsense пытается создать ссылку на свой собственный внешний скрипт.

Ответ №2:

Уже предоставленный скрипт близок к тому, который я всегда использую для этого:

 var js = document.createElement("script");
js.type = "text/javascript";
js.src = "//www.mydomain.com/passback.php";
document.getElementsByTagName('head')[0].appendChild(js);
  

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

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

Комментарии:

1. 1 Особенно за отсутствие http:||https: . Зачем люди вообще добавляют это?

2. @Josh указание схемы URL является «правильным» способом с точки зрения стандартов. URL без схемы на самом деле больше похож на взлом, который использует тот факт, что все браузеры возвращаются к текущей схеме страницы, когда не уверены, что использовать (недавнее открытие). Тем не менее, я использую и защищаю URL-адреса без схемы, но также признаю, откуда взялись стандарты. Теперь, когда URL-адреса без схемы настолько распространены и полезны, они могут стать стандартными. Но первоначальное намерение состояло в том, чтобы все URL-адреса имели схему. Список схем намного длиннее, чем просто http / https, и URL-адреса можно использовать за пределами Интернета.

3. Я знаю о других схемах, но этот вопрос находится в браузере, поэтому кто-нибудь подвергнет себя ошибкам, вызванным попыткой доступа http из https схемы?

Ответ №3:

Следующая функция загружает другой документ в тело документа. URL нового документа должен находиться в том же домене, которыйhttp://www.mydomain.com / в вашем случае.

Вам нужно сохранить следующий скрипт в виде файла .js и поместить его туда, где должно быть размещено объявление.

 function load(url) {
    var req = null;

    if (window.XMLHttpRequest) {
        req = new window.XMLHttpRequest();
    }
    else if (window.ActiveXObject) { //fallback
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) { }
        }
    }

    if (req) {
        req.open("GET", url, false);
        req.send(null);
        return req.responseText;
    }
}

document.write(load("http://www.mydomain.com/passback.php"));