【发布时间】:2009-08-17 00:46:27
【问题描述】:
我正在开发一个 Drupal 6 模块,在该模块中我使用 jquery(更具体地说,是 $.ajax 方法)从 Yahoo 的天气 API 检索 RSS 提要。我决定不使用 JFeed 库,因为我需要访问带有“yweather”前缀的元素(而且我找不到通过 JFeed 访问它们的方法)。我决定使用 $.ajax 方法来解析 XML 响应。下面的 JavaScript 代码在 Firefox 和 IE 中运行良好,但在 Safari(或 Chrome FWIW)中无法运行:
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);
});
}
当我在 Safari 中检查错误控制台时,我看到以下错误消息:TypeError: Result of expression 'atmosphere[0]' [undefined] is not an object. 在 Safari 中使用 getElementsByTagName 是否有问题?我应该以不同的方式访问 getElementsByTagName 返回的对象吗?
【问题讨论】:
标签: javascript jquery xml safari