2015-09-24 4 views
1

меня попросили, чтобы добавить этот код в моем пеке страниц продавца я продаю через:Загрузка файла JavaScript динамически

<script> 
    (function() { 
     var p = '/?vendor=2knowmysel&time=' + new Date().getTime(); 
     var cb = document.createElement('script'); cb.type = 'text/javascript'; 
     cb.src = '//header.clickbank.net' + p; 
     document.getElementsByTagName('head')[0].appendChild(cb); 
    })(); 
</script> 

код должен позволять загрузку страницы внутри заголовка, который имеет красный логотип на Clickbank , Когда я добавил код в раздел главы, ничего не произошло.

Далее я попытался изолировать проблему, разместив на пустой html-странице (вдали от drupal), которая равна http://www.2knowmyself.com/testpage.htm.

Но рамка не отображается.

Что здесь не так? Учитывая, что клик-банк требует совершенства кода.

+0

Что делать, если вы добавляете его непосредственно перед? Кажется, что вы пытаетесь добавить скрипт в голову, прежде чем голова закончит загрузку. –

+2

этот код делает HTTP-запрос Clickbank и получает код ответа '204 No Content'. Вам отправляется пустой скрипт, поэтому ничего не нужно выполнять, и логотип не отображается. –

+0

Привет @DanO они только что внедрили систему, возможно, они еще не добавили данные? так что мой вопрос, с моей стороны, работает? –

ответ

0

Вот что делает ваш код:

<script> 
    // the following line creates an anonymous immediately-invoked function 
    (function() { 
     // this will return a string named 'p', which contains the vendors ID and current time 
     var p = '/?vendor=2knowmysel&time=' + new Date().getTime(); 
     // this creates a new 'script' tag for HTML, name it 'cb', and tells the code it's for JavaScript 
     var cb = document.createElement('script'); cb.type = 'text/javascript'; 
     // this will take a url with the address and the query string, which you named 'p' earlier, and set it as the source for 'cb' 
     cb.src = '//header.clickbank.net' + p; 
     // now you'll insert 'cb' to the HTML, so it'll load the JavaScript file into it 
     document.getElementsByTagName('head')[0].appendChild(cb); 
    // the function won't run automatically upon declaration, so you use parenthesis to tell it to run 
    })(); 
</script> 

Подводя итоги, он bassically отправляет идентификатор поставщика и текущее время на данном сервере, и ожидает, что файл JavaScript взамен от него; он загрузит этот файл в ваш HTML-документ.

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

EDIT: (ответить на ваш последний вопрос)

До этого момента, я могу видеть, что их сервер не отправляет ожидаемый JS файл обратно на свою страницу, так что это не работает. Если вы хотите проверить это самостоятельно, используйте в своем браузере отладчик JS или сетевой монитор (большинство современных веб-браузеров поставляются с этими встроенными функциями, попробуйте нажать F12, а затем перезагрузите страницу).

Если вы хотите проверить, работают ли iframe на вашем сервере, вы можете обратиться к его администратору или попытаться встроить iframe на страницу самостоятельно. Вставьте следующий код в документ. Если вы видите домашнюю страницу SO, она работает. В противном случае он ничего не покажет. Если вы видите Your browser does not support iframes., вам, возможно, придется обновить свой веб-браузер и снова проверить его.

<iframe src="http://stackoverflow.com" width="300" height="300"> 
    <p>Your browser does not support iframes.</p> 
</iframe> 
+0

спасибо вам столько всего тела. Очень полезный, Заключительный вопрос. они отправили мне эту информацию с руководством по установке. «Заголовок ClickBank загружает ваши страницы внутри iframe. Блокировка iframes полностью заблокирует функциональные возможности страницы. Убедитесь, что ваша конфигурация веб-сервера позволяет загружать ваши страницы внутри фрейма.« Как я знаю, что это не проблема? –

+0

Надеюсь, это поможет. Если это решит ваш вопрос, я прошу вас любезно выбрать этот ответ в качестве принятого, что дает мне репутацию и мотивирует меня помогать другим –

+0

@MohamedFarouk, проблема в том, что их сервер не отправляет JS-файл обратно. Я могу вам это гарантировать, но вы можете проверить это самостоятельно с помощью отладчика JavaScript в своем веб-браузере или проверить сетевой монитор в вашем браузере, когда загружается страница. Если вы беспокоитесь о том, разрешает ли ваш сервер или нет 'iframe', вы можете связаться с администратором вашего веб-сервера. –