ie8 'Неверный указатель' - PullRequest
2 голосов
/ 12 марта 2012

У меня есть функция, написанная на coffeescript, которая раньше работала нормально, но теперь выдает исключение 'Invalid Pointer' в ie8.

Сценарий кофе

convertSVGforIE = ->

  if not $.support.svg or device.ff36
    imagesToConvert = $('img.SVG')
    imagesToConvert.each ->
      imageSrcMinus = this.src.substr 0, this.src.length - 3
      this.src = imageSrcMinus + 'png'

Javascript

convertSVGforIE = function() {
    var imagesToConvert;
    if (!$.support.svg || device.ff36) {
      imagesToConvert = $('img.SVG');
      return imagesToConvert.each(function() {
        var imageSrcMinus;
        imageSrcMinus = this.src.substr(0, this.src.length - 3); //Invalid pointer
        return this.src = imageSrcMinus + 'png';
      });
    }
};

Я не вижу ничего плохого в моем сценарии. Пожалуйста, помогите мне определить, в чем проблема ie8.

UPDATE: Я получил это на работу, но не в хорошем смысле

convertSVGforIE = ->

  if not $.support.svg or device.ff36
    $('img.SVG').each ->
      that = $(this)
      imageSrcMinus = that.attr('src').substr 0, that.attr('src').length - 3
      that.attr 'src', imageSrcMinus+'png'

Вышеприведенный скрипт работает, но почему работает $ (this) .attr ('src')? пока this.src нет? И почему только в IE?

Ответы [ 2 ]

4 голосов
/ 29 ноября 2013

На самом деле свойство изображения .src поддерживается во всех версиях IE. Эта документация MSDN довольно запутанная, поскольку, похоже, она подразумевает, что свойство поддерживается только в IE8 или новее; но это неправильно

Однако ошибка неверного указателя возникает в IE8, когда вы пытаетесь прочитать .src изображения, который имеет URI данных больше 4K. Эта ошибка задокументирована на http://support.microsoft.com/kb/2688188, и рекомендуется исправить это, чтобы обновить ваш браузер.

Но есть простой обходной путь, который заключается в ссылке на SRC в коллекции атрибутов изображения, то есть вместо этого:

img.src

используйте это:

img.attributes.src.value
3 голосов
/ 12 марта 2012

Если вы посмотрите на http://msdn.microsoft.com/en-us/library/ms534643(v=vs.85).aspx,, это говорит о том, что

  1. Вы можете сделать elem.src только из IE8 или новее, и
  2. Как именно это работает, зависит отнаходитесь ли вы в режиме стандартов IE8 или в режиме совместимости.

Если вы посмотрите на комментарии на этой странице, есть и другие причуды.

Использование jQuery, безусловно, являетсяздесь самое простое исправление, с приятным побочным эффектом совместимости с IE6-7, но вы также можете попробовать добавить

<meta http-equiv="X-UA-Compatible" content="IE=8" />

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...