2012-01-07 7 views
1

Я стараюсь изо всех сил разрабатывать приложение для Blackberry Playbook (да, я знаю, он мертв ... нести меня).Playbook WebWorks jQuery на готовом вызове дважды

Я использую простое приложение WebWorks, и моя функция jQuery ready() появляется, когда вы загружаете мою страницу дважды.

<!doctype html> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
        alert("ready"); 
      }); 
     </script> 
    </head> 
    <body> 
     Hello World. 
    </body> 
</html> 

Любая идея, почему это произойдет? Я тестирую симулятор Ripple для Playbook.

+0

поэтому, когда вы перезагружаете оповещение, дважды срабатывает? – Kishore

+0

Эта ситуация происходит также с использованием синтаксиса коротких форм. В другом месте кто-то предложил setTimeout (startup, 3000) [где startup - это функция обертки вокруг обычного готового вызова]. Это работает, но это ужасное решение и должно быть удалено для производства. (где эта проблема не возникает) Я все еще ищу лучшее решение ... Будет обновляться здесь. – Simon

ответ

1

Я уверен, что текущая версия Ripple на Windows в любом случае загружает страницу дважды. Это не имеет никакого отношения к jQuery (или CoffeScript, который я также использую).

Решение у меня есть это работает, даже если мне не нравится это:

// earlier 
var runner = function() { 
    alert('ready'); 
}; 

// later 
$(function() { 
    if(window.tinyHippos) { 
    setTimeout(runner, 3000); 
    } else { 
    runner(); 
    } 
}); 

Довольно Hacky, но это, кажется, работает. Надеемся, что в следующей итерации Ripple двойная нагрузка исчезнет.

0

В ваших усилиях по тестированию вы попытались использовать ярлык для использования .ready(), чтобы увидеть, выполняют ли они один и тот же результат с двумя предупреждениями?

$(function() { 
    alert('ready'); 
}); 

Кроме того, возможно, попытаться использовать предыдущую версию JQuery только для проверки, чтобы убедиться в том, что это связано с проблемой в последней версии JQuery.

Итак, возможно, попробуйте 1.6.1 вместо 1.7.1.

Жаль, что я не смогу помочь больше, но у меня лично нет Playbook.