Я не специалист по javascript, но немного озадачен тем, как это работает в трех основных браузерах, но не в Safari ... что-то не так с этим кодом? По сути, я просто использую это в сочетании с обратным вызовом php / mysql по указанному URL для отслеживания кликов по ссылкам.
Drupal.behaviors.NodeDownloadCounter = function() {
$('a.ndc-link').click(function() {
$.post('http://www.pixeledmemories.com/node-download-counter/log/' + this.name);
return true;
});
};
Использование здесь поведения Drupal вместо
$(document).ready(function() {
(правильный метод Drupal), но я пробовал оба способа, и это не имеет значения.
Я также пытался удалить «вернуть истину», но безрезультатно.
Хорошо, дальнейшее тестирование показывает, что при срабатывании щелчка срабатывает СЕЙЧАС в Safari:
$('a.ndc-link').click(function() {
alert('testing (ignore)');
$.post('http://www.pixeledmemories.com/node-download-counter/log/' + this.name);
return true;
});
Но все еще ничего не регистрируется в mysql. Вот моя функция обратного вызова:
function node_download_counter_log($nid)
{
global $user;
$timestamp = time();
$title = db_result(db_query("SELECT title FROM {node} WHERE nid = %d", $nid));
db_query("INSERT INTO {node_download_counter} (nid, title, download_count, last_download, last_uid) VALUES (%d, '%s', %d, %d, %d)
ON DUPLICATE KEY UPDATE download_count=download_count+1, last_download = %d, last_uid = %d", $nid, $title, 1, $timestamp, $user->uid, $timestamp, $user->uid);
db_query("INSERT INTO {node_download_counter_log} (nid, title, uid, timestamp) VALUES (%d, '%s', %d, %d)", $nid, $title, $user->uid, $timestamp);
}