Единственный JavaScript (библиотека), чтобы устранить все проблемы IE 6 и сделать это совместимым с css3

Есть ли какой-либо JavaScript (библиотека) или какое-либо другое решение, через которое мы можем устранить большинство проблем IE6 как PNG, фиксируют и также делают IE6 для поддержки свойств CSS3?

5
задан Jonathan Leffler 24 November 2011 в 00:04
поделиться

4 ответа

Нет. Поддержка CSS3 в IE6 не произойдет. Доступна библиотека, которая сделает IE6 более или менее совместимую с IE7:

http://code.google.com/p/ie7-js/

3
ответ дан 14 December 2019 в 04:38
поделиться

Я предполагаю jQuery Проходит долгий путь к разрешению проблем IE6, потому что библиотека пытается для совместной совместимости браузера и сделки с CSS. По крайней мере, не может быть лучшего варианта.

Вы можете проверить пробел Test для jQuery , чтобы увидеть, когда тесты IE6 находятся.

1
ответ дан 14 December 2019 в 04:38
поделиться

Попробуйте:

CreateFont(L"monospace");

Ведущий символ «L» указывает компилятору создать широкую (wchar_t) последовательность.

-121--3126683-

Судя по вашему другому вопросу , кажется, вы не понимаете, как работают классы. Классы - это совокупность функций, которые работают с данными.

Сами функции не содержат памяти в классе. Следующий класс:

struct dumb_class
{
    void foo(){}
    void bar(){}
    void baz(){}
    // .. for all eternity

    int i;
};

имеет размер int . Независимо от того, сколько у вас когда-либо функций, этот класс займет только пространство, необходимое для работы с int . При вызове функции в этом классе компилятор передаст вам указатель на место, где хранятся данные в классе; это указатель this .

Итак, функция находится в памяти где-то, загруженной один раз в начале программы, и ждать вызова с данными для работы.

Виртуальные функции различаются. Стандарт C++ не определяет, как должно происходить поведение виртуальных функций, а только то, каким должно быть это поведение. Обычно реализации используют то, что называется виртуальной таблицей, или vtable для краткости. Таблица vtable - это таблица указателей функций, которые, как и обычные функции, назначаются только один раз.

Возьмите этот класс и предположим, что наш реализатор использует vtables:

struct base { virtual void foo(void); };
struct derived { virtual void foo(void); };

Компилятору нужно будет сделать два vtable, один для базового и один для производного. Они будут выглядеть примерно так:

typedef /* some generic function pointer type */ func_ptr;

func_ptr __baseTable[] = {&base::foo}; 
func_ptr __derivedTable[] = {&derived::foo}; 

Как используется эта таблица? При создании экземпляра класса выше компилятор проскальзывает скрытый указатель, указывающий на правильную таблицу vtable. Итак, когда вы говорите:

derived d;
base* b = &d;
b->foo();

При выполнении последней строки, она переходит к правильной таблице ( __ Таблица в данном случае), переходит к правильному индексу (0 в данном случае) и вызывает эту функцию. Как вы видите, это в конечном итоге вызовет производное:: foo , что именно и должно произойти.

Обратите внимание на то, что в дальнейшем это то же самое, что делать производное:: foo (b) , передавая b в качестве этого указателя.

Таким образом, при наличии виртуальных методов класс размера увеличивается на один указатель (указатель на таблицу vtable). Множественное наследование меняет это немного, но в основном одно и то же. Для получения более подробной информации см. C++ -FAQ .

Теперь, на ваш вопрос. У меня есть:

struct base { virtual void foo(void) = 0; }; // notice the = 0
struct derived { virtual void foo(void); };

и база:: foo не имеет реализации. Это делает base:: foo чистой абстрактной функцией. Итак, если бы я назвал это, как выше:

derived d;
base* b = &d;
base::foo(b);

Какого поведения мы должны ожидать? Являясь чистым виртуальным методом, base:: foo даже не существует. Вышеприведенный код является неопределенным поведением, и может делать что угодно от ничего до краха, с чем-либо между ними. (Или хуже.)

Подумайте о том, что представляет собой чистая абстрактная функция. Помните, что функции не принимают данных, они только описывают, как манипулировать данными. Чисто абстрактная функция гласит: "Я хочу вызвать этот метод и заставить манипулировать моими данными. Как вы делаете Вам решать. «

Поэтому, когда вы говорите, «ну,давайте назовем абстрактный метод, «вы отвечаете на вышесказанное с:» До меня? Нет, вы это сделаете. "на что он ответит" @ # ^ @ # ^ ". Просто не имеет смысла говорить кому-то, кто говорит «сделать это», «нет».

Чтобы ответить на ваш вопрос напрямую:

«почему мы не можем создать объект для абстрактного класса?»

Надеюсь, вы видите сейчас, абстрактные классы только определяют функциональность, которую должен иметь конкретный класс. Абстрактный класс сам по себе - только синяя печать; ты не живешь в голубых отпечатках, ты живешь в домах, которые реализуют голубые отпечатки.

-121--3765782-

jQuery и другие популярные рамки обрабатывают множество вариантов совместимости между браузерами, но не учитывают прозрачность PNG, большинство неподдерживаемых CSS3 и т. д.

Если вы хотите сделать шаг вверх, Google Chrome Frame является вариантом, однако его необходимо установить на клиентские компьютеры.

0
ответ дан 14 December 2019 в 04:38
поделиться

В самом конце их сайта они имеют несколько ссылок на учебные пособия.

Я думаю, вы найдете этот Nettuts + один значение в игре с 960.

-121--2414495-

Да, это возможно с помощью нового (ну это уже не новое) замкнутого питателя (так как JUnit 4,5 ), который запускает все статические внутренние классы внешнего класса.

Чтобы использовать его, просто аннотируйте внешний класс с помощью @ RunWith (Enclosed.class) и сделайте внутренние классы статическими.

@RunWith(Enclosed.class)
public class WorkerServiceTest {

    public static class RaiseErrorTest extends AbstractDbUnitTest{
        @Test
        public void testSomething(){
        } 

        ...
    }

    ...
}

И mvn тест запустит их.

-121--2948988-

Краткий ответ: Нет.

Немного более длинный ответ: Хотя вы можете собрать воедино части кода здесь и там, которые помогут вам получить большую часть того, что вы хотите в IE6, проблема в том, что ни одна из этих технологий не идеальна (с большинством исправлений PNG - попробуйте использовать прозрачные PNG на фоновом изображении и измените фоновое изображение, изменив класс). Могут быть решения для скругленных углов или теней, но они, вероятно, также будут блестящими.

Многие рамки JavaScript предлагают почти полную поддержку функций JavaScript для IE6, но для CSS это не так. Многие вещи в расширенной CSS (2 и 3) никогда не будут возможны в IE6, но должны быть достигнуты разными способами. Отсутствует свойство content , : hover работает только на тэгах привязки, псевдоселекторы на основе атрибутов не работают.

Даже такие технологии, как GWT, которые легко компилируются в JavaScript для всех браузеров, предлагают условный CSS, чтобы вы могли кодировать свои собственные взломы или изящную деградацию.

3
ответ дан 14 December 2019 в 04:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: