Можно ли использовать Excanvas для работы в IE 8?

17

Я работал над плагином jQuery под названием «BeautyTips», и он работал отлично. Но, поскольку я установил IE 8, этот плагин перестает работать, потому что ему нужен Excanvas, чтобы IE рисовал векторы, изображения и т. Д.

Я попытался загрузить новую версию Excanvas, но она не работает вообще ...

    
задан AndreMiranda 02.06.2009 в 20:35
источник
  • Все еще дует, что Microsoft вывела IE8 без родного Canvas. –  Nosredna 02.06.2009 в 21:02

7 ответов

10

Попробуйте добавить элемент canvas в документ перед его инициализацией с помощью excanvas:

var foo = document.getElementById("targetElementID");
var canvas = document.createElement('canvas');
canvas.setAttribute("width", 620);
canvas.setAttribute("height", 310);
canvas.setAttribute("class", "mapping");
foo.appendChild(canvas);
canvas = G_vmlCanvasManager.initElement(canvas);
    
ответ дан Jeff Lamb 03.12.2009 в 20:02
источник
16

Новый режим «стандартов» IE8 отключает некоторые нестандартные функции. Среди них VML, который используется excanvas. Я просто установил режим IE7 «стандарты», поэтому он все еще работает.

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

Разочарование, но я не знаю никаких преимуществ, поднятых IE8.

    
ответ дан Javier 02.06.2009 в 20:56
источник
  • Это очень хорошо. Когда мне приходилось использовать Canvas на IE8, я вместо этого вбрасывал его в режим quirks, который сосал. –  Nosredna 02.06.2009 в 21:00
  • он использовал его сначала, но продолжал сталкиваться с множеством проблем на других частях страницы. вручную установить в совместимость с IE7 большинство, поэтому я продолжал поиск в Google, пока не нашел этот элемент. в теории будущего IE (о Боже, нет!) позволит вам выбирать из самых разных «стандартов», из прошлых версий –  Javier 02.06.2009 в 22:47
  • mmm, последняя версия, похоже, работает только с режимом совместимости, для меня тоже –  Peanuts 01.08.2009 в 16:07
14

Да, у меня есть excanvas, работающий в режиме стандартов IE8 (только для тестирования, который нам нужен). В функции CanvasRenderingContext2D _ я прокомментировал строку:

//el.style.overflow = 'hidden';//fix IE8

Ширина и высота объекта-узла el составляла 0px на 0px, поэтому не задавая переполнение для скрытия, сделанный визуализированным элементом видимым.

Я немного изменил порядок создания canvasPieTimer , чтобы получить требуемый результат. Надеюсь, это будет полезно.

    
ответ дан Ronald B. 16.11.2009 в 09:08
источник
  • Похоже, это может быть проблема. Перевернув переполнение для элемента canvas, я использовал исправленную проблему при отладке. –  Ian 30.09.2010 в 12:01
  • +1 Я бы проголосовал за это больше! Сэкономил мне серьезную головную боль в режиме совместимости !! –  El Ronnoco 23.05.2012 в 16:23
  • Не нужно отключать стандартный режим - вы легенда! –  bart 20.07.2012 в 04:49
  • Это исправление выглядит хорошо, но если вы попытаетесь использовать масштабирование, ваш график будет виден на пути к холсту. –  KopBuH 14.08.2012 в 14:06
2

Вы уверены, что установлена ​​самая последняя версия excanvas.js? (выпущен в марте 2009 года, размещен на новой странице проекта Google Code)

Я использовал плагин Beauty Tips в IE8 и AFAIK, который работал в основном режиме IE8.

    
ответ дан fbuchinger 03.06.2009 в 00:05
источник
  • Я не знал, что появился новый excanvas. Благодарю. –  Nosredna 03.06.2009 в 00:09
1

Последняя версия плагина bt исправляет эту проблему для меня.

    
ответ дан jeff Walters 20.06.2009 в 00:56
источник
  • @jeff, я попытался использовать эту версию, но это не сработало для меня. Мне нужно было сделать еще кое-что, чтобы оно работало! –  AndreMiranda 20.06.2009 в 05:15
  • Я использую последнюю версию, но она не работает нигде, я удалил свой кеш, но все равно ничего. Есть идеи ? –  Peanuts 01.08.2009 в 16:04
0

Добавление тега canvas в виде строки html с jquery не работает с новой версией excanvas. Сначала вы должны использовать document.createElement ('canvas').

    
ответ дан Markus 20.07.2010 в 20:38
источник
0

, если у кого еще есть эта проблема: Советы по красоте версии 0.9.5 устраняет эту проблему. однако, если вам нужно использовать более раннюю версию (например, я делаю, так как новая версия ввела вопрос о том, что чаты закрыты преждевременно на моей странице) вы должны заменить строку 530 следующими строками:

var canvas = document.createElement('canvas');  
$(canvas).attr('width', (numb($text.btOuterWidth(true)) + opts.strokeWidth*2)).attr('height', (numb($text.outerHeight(true)) + opts.strokeWidth*2)).appendTo($box).css({position: 'absolute', top: $text.btPosition().top, left: $text.btPosition().left, zIndex: opts.boxzIndex});

надеюсь, что это поможет.

    
ответ дан Salmonela 24.08.2011 в 14:08
источник