Динамическая настройка изображения src с помощью JavaScript не удалась на iOS

3

У меня есть следующий код JavaScript

var aimg = new Image();
aimg.crossOrigin = 'Anonymous';
aimg.onload = function () {
    //execute some code when image loaded
};
aimg.onerror = function () {
    //execute some code when image failed to load
};
aimg.src = someExistedImageUrl;

работает на Chrome, Firefox на десктопе Linux и устройствах Android, onload запускается правильно. Но в прошивке, onerror всегда срабатывают Eventhough изображения существует, и исходя из тех же происхождения.

Почему приведенный выше код не смог загрузить изображение в iOS?

Обновить

Я добавляю следующий код, как предложено, но не работает. Изображение относительно небольшого размера, менее 80 КБ.

aimg.src = null;
  • 0
    Какая ошибка показана?
  • 0
    Нет ошибок в консоли, но onerror не всегда срабатывает. Открытие URL изображения вручную в адресной строке браузера приводит к успешной загрузке изображения.
Показать ещё 5 комментариев
Теги:
image

2 ответа

3

Может быть, это проблема с кешем. Попробуйте это и посмотрите, работает ли он или нет;

var aimg = new Image();
aimg.crossOrigin = 'Anonymous';
aimg.onload = function () {
    //execute some code when image loaded
};
aimg.onerror = function () {
    //execute some code when image failed to load
};
aimg.src = null;
aimg.src = someExistedImageUrl;

Кроме того, проверьте размер изображения.

Выделение JavaScript также ограничено 10 МБ. Safari вызывает исключение, если вы превышаете это ограничение на общее выделение памяти для JavaScript.

Для получения дополнительной информации, вы можете проверить этот вопрос

  • 0
    Я постараюсь как можно скорее
0

Поместите тег на кнопку, вы можете сделать это программно или в инспекторе атрибутов, тег по умолчанию равен 0, а затем вы должны сделать сравнение в функции.

@IBAction func onNextButtonTap (_ sender: Any)
{
    let button = sender as! UIButton let index = button.tag switch index {
    case 1 :
        let vc1 = firstViewcontroller.getInstance ()
        self.navigationController?.pushViewController (vc1, animated: true)
        break
    case 2 :
        let vc2 = firstViewcontroller.getInstance ()
        self.navigationController?.pushViewController (vc2, animated: true)
        break
    default :
        print ("Otherwise, do something else.")
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню