У меня неприятная проблема с Javascript / Firefox. Соответствующий код приведен ниже.
В основном происходит следующее:
1. document.ready запускается и инициирует запрос AJAX (на document.domain: 8484 / getTrack.php или что-то еще)
2. Получен ответ AJAX. Этот ответ содержит URL-адрес (в том же домене) местоположения изображения. Итак, sourceImage.onload установлен, затем sourceImage.src установлен
3. Срабатывает sourceImage.onload. Теперь идея состоит в том, чтобы сохранить в памяти изображение с измененным размером, которое идеально соответствует холсту, на котором оно будет рисоваться. Я хочу сохранить это изображение с измененным размером в памяти, потому что я собираюсь записывать (части) его на свой холст много раз, и изменение размера каждый раз должно происходить намного медленнее.
var SourceImage = new Image(); var preparedImageData; sourceImage.onload = function() { var canvas = document.createElement('canvas'); canvas.width = 100; canvas.height = 100; var ctx = canvas.getContext("2d"); // resize image ctx.drawImage(sourceImage, 0, 0, sourceImage.width, sourceImage.height, 0, 0, canvas.width, canvas.height); // save as imagedata try { try { preparedImageData = ctx.getImageData(0, 0, canvas.width, canvas.height); } catch (e) { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); preparedImageData = ctx.getImageData(0, 0, canvas.width, canvas.height); } } catch (e) { throw new Error("unable to access image data: " + e) } }
Первый вызов getImageData срабатывает, и вызов enablePrivilege также срабатывает немедленно. Текст ошибки: «Сценарию из« http://127.0.0.1 »было отказано в правах UniversalBrowserRead.». Я проверил, и похоже, что эти сообщения должны появляться только при попытке доступа к getImageData на изображении из другого домена, хотя это не так (верно?). нет строгой политики безопасности (все по умолчанию), Firefox 4.0. Тот же код отлично работает в Chrome.