Je travaille sur un module Drupal 6 où j'utilise jquery (et plus spécifiquement, la méthode $ .ajax) pour récupérer un flux RSS de l'API météo de Yahoo. J'ai décidé de ne pas utiliser la bibliothèque JFeed car j'ai besoin d'accéder aux éléments avec le préfixe "yweather" (et je n'ai pas trouvé de moyen d'y accéder via JFeed). J'ai décidé d'utiliser la méthode $ .ajax et d'analyser la réponse XML à la place. Le code JavaScript ci-dessous fonctionne bien dans Firefox et IE, mais ne fonctionne pas dans Safari (ou Chrome FWIW):Javascript fonctionne dans FF/IE mais pas Chrome/Safari
function parseXml(xml) {
var atmosphere = xml.getElementsByTagName("yweather:atmosphere");
var humidity = atmosphere[0].getAttribute("humidity");
$('#weatherFeed').html("Humidity: " + humidity);
$('#weatherFeed').append(
"<div style=\"text-align: center;margin-left: auto; margin-right: auto;\">" +
city + ", " + state + "</div>");
}
function getData(){
$.ajax({
type: 'GET',
url: 'proxy.php?url=http://weather.yahooapis.com/forecastrss&p=94041',
dataType: 'xml',
success: function(xml) {
parseXml(xml);
}
});
}
if(Drupal.jsEnabled) {
$(function() {
getData();
setInterval("getData()", 30000);
});
}
Quand je vérifie la console d'erreur dans Safari je le message d'erreur suivant: TypeError: Result of expression 'atmosphere[0]' [undefined] is not an object.
Y at-il un problème avec utilisant getElementsByTagName dans Safari? Dois-je accéder différemment à l'objet retourné par getElementsByTagName?
Oui Je viens essayé et a obtenu le même message d'erreur dans Safari comme je l'étais avant (TypeError: Résultat d'express 'atmosphere [1]' [indéfini] n'est pas un objet – toddk