我正在使用jQuery(更具體地說,$ .ajax方法)從雅虎天氣API檢索RSS提要的Drupal 6模塊。我決定不使用JFeed庫,因爲我需要訪問帶有「yweather」前綴的元素(並且我找不到通過JFeed訪問它們的方法)。我決定使用$ .ajax方法來解析XML響應。下面的JavaScript代碼工作正常在Firefox和IE,但在Safari瀏覽器(或Chrome FWIW)不工作:Javascript工作在FF/IE但不是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);
});
}
當我在Safari檢查錯誤控制檯我看到了以下錯誤消息:TypeError: Result of expression 'atmosphere[0]' [undefined] is not an object.
是否有一個問題與在Safari中使用getElementsByTagName?我應該以不同的方式訪問由getElementsByTagName返回的對象嗎?
是的,我只是去嘗試,並在Safari中得到了相同的錯誤消息,因爲我是之前(類型錯誤:明確的結果'atmosphere [1]'[undefined]不是一個對象 – toddk 2009-08-17 01:08:41