Эти работы js-кода в сафари на моем ПК, но не на сафари iPod touch (также протестировал его на iPhone - все еще не работающий).
$(document).ready(function(){
$.ajax({
type: "GET",
url: "list.xml",
dataType: "xml",
cache: false,
success: function(xml)
{
$(xml).find('Lights>Light').each(function(){
var lightname = $(this).attr('Name');
$('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems');
});
}
});
});
function lightdata()
{
alert("entered lightdata");
}
Код анализирует xml и динамично создает HTML. Мое предупреждение не показывают на iPod touch - другие тестовые предупреждения показывают очень хорошо. Таким образом, вызов функции к lightdata не должен происходить по некоторой неизвестной причине (следовательно этот вопрос; o)), когда я выполняю это на iPod touch. Каковы возможности отладки в сафари на карманном устройстве? я ищу что-то как поджигатель - только для сафари iPhone вместо этого для Firefox. Консоль отладки в мобильном сафари не показывает ошибок. Любой совет / подсказки ценился бы.
Поскольку у меня нет вашего XML для проверки, я пойду на хитрость и скажу, что проблема в лишних символах \')"
в вашем HTML-коде:
Измените эту строку:
$('<li><a href="#lightssubmenu" onclick="lightdata()" \')">'+lightname+'</a></li>').appendTo('#lightitems');
На эту:
$('<li><a href="#lightssubmenu" onclick="lightdata()">'+lightname+'</a></li>').appendTo('#lightitems');
Кроме того, вам следует изменить способ обработки событий и прикрепить их вне встроенного обработчика onclick
. Вот ваш код, немного измененный:
$(document).ready(function(){
var lightItems = $('#lightitems');
lightItems.delegate('a','click', function(e){
e.preventDefault();
lightdata();
})
$.ajax({
type: "GET",
url: "list.xml",
dataType: "xml",
cache: false,
success: function(xml) {
$(xml).find('Lights>Light').each(function(){
var lightname = $(this).attr('Name');
lightItems.append('<li><a href="#lightssubmenu">'+lightname+'</a></li>');
});
}
});
});
function lightdata()
{
alert("entered lightdata");
}
Примечание: для этого требуется jQuery 1.4.2+