IE7 excanvas - $ (document) .ready () и IE7 создает проблему - PullRequest
2 голосов
/ 06 июля 2011

РЕДАКТИРОВАТЬ: я определил ссылку на проблему ниже на использование $ (document) .ready () вместо использования устаревшего атрибута onload тела

Проблема

В IE7 холст / excanvas не рендерится до тех пор, пока вы не нажмете на перезагрузку - я очищал кэш несколько раз, и результат не изменился.

Холст всегда пуст напри начальной загрузке страницы и появляется ошибка «объект не поддерживает это свойство или метод» - сообщение, которое ссылается на вызов .getcontext ().Однако, как только я нажимаю перезагрузить, это волшебным образом работает.Всегда после перезагрузки .. это работает.никогда никакими другими способами добраться до страницы это не работает.При начальной загрузке страницы всегда возникает ошибка.

Под «начальной загрузкой страницы» я подразумеваю, когда страница загружается по нажатой ссылке, ручному вводу в адресную строку или с помощью кнопок «назад / вперед».

Вот репродукция: http://www.trevorsimonton.com/canvas_problem/example7.html

Обратите внимание, что там много дополнительного Javascript для воспроизведения среды Drupal, где возникла эта проблема.


код

Я использую excanvas r3 - http://code.google.com/p/explorercanvas/downloads/detail?name=excanvas_r3.zip и Drupal 6

РЕДАКТИРОВАТЬ: я удалил кучу кода, который у меня был, потому что у меня есть 2 места насайт, где я работаю с холстами совершенно по-другому.Я смог воспроизвести проблему в указанном выше месте назначения (http://www.trevorsimonton.com/canvas_problem/example7.html)


Корень вопроса

Кто-нибудь знает больше о том, как excanvas или поведение IE7, которые могутвызвать такую ​​проблему? Что, помимо кеша браузера, могло вызывать загрузку страницы по-разному между командой "перезагрузки" и чем-то еще?

1 Ответ

1 голос
/ 06 июля 2011

Поскольку это Drupal 6, я использую Jquery 1.3.2

Очевидно, $(document).ready() срабатывает до того, как excanvas действительно готов.Хотя это не так в большинстве браузеров, конечно, IE будет другим.

IE7 требует, чтобы все вызовы getContext() исходили из функции, передаваемой в атрибут onready тега body.

Делать это в drupal немного сложно, но я просто жестко запрограммировал его в шаблоне страницы.Посмотрите это, если вам нужны полные инструкции: excanvas и готовый документ JQuery 1.3.2, не ладите

...