Voici un code d'intégration du Web Service click d'AFS. Les deux fonctions suivantes doivent être chargées dans les pages où elles seront appelées. Pour cela, plusieurs solutions :
- Créer un fichier Javascript dédié à ce code. Ce n'est pas conseillé pour des questions de performances (charger un fichier via HTTP est coûteux),
- Insérer ce code dans votre code Javascript, ou directement au sein d'un élément <script>,
- Intégrer ce code dans vos fichiers compressés.
/**
* @param clickPath must be the path at which the click web service can be reached.
* "/click" will be appended to this parameter Example: http://xxx.afs-antidot.net/
* @param serviceId AFS Service id
* @param status AFS Service status
* @param target Clicked URL
* @param label Label
* @param sessionId Optional, AFS Search session id
* @param userId Optional, AFS Search user id
*/
function notifyClick(clickPath, serviceId, status, target, label, sessionId, userId)
{
var url = clickPath + 'click?afs%3Aservice=' + serviceId + '&afs%3Astatus=' +
status + '&afs%3Atarget=' + encodeURI(target) + '&afs%3Alabel=' +
encodeURI(label) + '&afs%3Aaction=log';
if (sessionId)
{
url += '&afs%3AsessionId=' + encodeURI(sessionId);
}
if (userId)
{
url += '&afs%3AuserId=' + encodeURI(userId);
}
executeGetRequest(url);
}
/**
* Executes an HTTP GET method to the given URL. It supports requesting any host name
* (uses a work around for the Same Origin Policy). This method is not able to return
* the response body.
* @param url The target URL
*/
function executeGetRequest(url)
{
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.setAttribute('src', url);
document.body.appendChild(iframe);
}
Il y a deux fonctions. La première est celle à appeler, la deuxième n'est là que pour des questions d'implémentation.
Cette fonction supporte les requêtes cross-domaine, et requiert d'avoir accès aux valeurs suivantes:
- AFS service ID et AFS service status
- Click Web Service host. Par exemple http://project-name.afs-antidot.net
- Click Web Service path. Si click est à la racine du server web, la valeur est : /
- Click target: URL du search résultat de recherche qui va être cliqué
- Click label: Titre du résultat de recherche.
Deux paramètres supplémentaires sont optionnels : AFS sessionId et userId. Ils permettent à click de traquer les sessions de recherche. Leurs valeurs sont générées par les Web Services d'AFS.
Ce code a été testé et fonctionne sur la plupart des navigateurs, tels que : Firefox, Chrome, Safari, Opera, Internet Explorer 7, 8 ,9.