Вызов функции не возвращается к вызывающей функции

Я использую Shadowbox.js для отображения слайд-шоу на веб-сайте. Это слайд-шоу показывает несколько фотографий, и я хотел бы знать, кто смотрит на какие фотографии. Для этого я использую statcounter.com. Shadowbox предлагает так называемый хук для вызова функции, когда открывается слайд-шоу и когда оно меняется на другое изображение. Я написал небольшой фрагмент кода, чтобы заставить вещи двигаться, но по какой-то причине я получаю запись в моем журнале statcounter, но shadowbox не появляется. Когда я не использую onopen и onchange в опциях, shadowbox действительно отображается. В качестве теста вы можете создать каталог, в который вы поместите код ниже. Создайте подкаталоги в этом каталоге с именами "sb" и "pix". Загрузите Shadowbox-приложение с сайта и сохраните его в каталоге "sb" ( http://shadowbox-js.com/download.html). Рядом с этим храните 3 свидетельства (называемые image1.jpg, image2.jpg и image3.jpg) в каталоге "pix". Чтобы проверить, снимает ли statcounter фотографии, вы можете использовать мой testaccount на statcounter.com (только для просмотра: тестовый регистр аккаунта, пароль casetest1).

Пожалуйста, найдите HTML-код с кодом здесь: http://www.heres-online.nl/test/index.html

Пожалуйста, примите во внимание, я только начинаю программировать на JavaScript и HTML. Я могу вообразить, что я пропускаю что-то ужасно простое... Любая помощь высоко ценится.

2 ответа

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

var img = new Image();
img.src = "... tracker URL ...";

Это все, что вам нужно сделать. также избавьтесь от всех этих обратных косых черт в ваших строках URL; нет никакого смысла для них.

отредактируйте снова я думаю, что это все, что вам нужно:

var nonsense = 1;
function tracker() {
  var img = new Image();
  img.src = "http://c.statcounter.com/counter.php?sc_project=5981755&security=582aa718&invisible=1&u=" +
    encodeURIComponent("http://my.pix/" + Shadowbox.getCurrent().content) +
    '&nonsense=' + new Date().getTime() + '_' + nonsense++);
  return true;
}

(добавлен нонсенс-параметр, чтобы попытаться преодолеть возможные проблемы с кэшированием)

edits - OK, обратите внимание на "return true" и изменение "escapeURIComponent" (неверно) на "encodeURIComponent". (Я всегда путаюсь, потому что старая устаревшая функция называлась escape).

Пожалуйста, держите лошадей на моем последнем комментарии. Я сделал ошибку сам (опечатка). Вместо encodeURIComponent я набрал enocdeURIComponent (почему бы не скопировать / вставить... да, ну, я просто не сделал). Сценарий сейчас делает именно то, что я намеревался сделать. Я знаю, что есть запись Statcounter для каждой фотографии в слайд-шоу! Superb. Я очень доволен твоей помощью, это действительно мучило меня, я не мог заставить его работать. И скорость получения ответа здесь была действительно удивительной! Я также разместил ваше решение на форуме Shadowbox.js. Я тоже разместил там свой вопрос, но ответов пока нет. Но для тех, кто борется с той же проблемой, это решение может быть полезным. Еще раз спасибо и хороших выходных!

Другие вопросы по тегам