Почему наличие переходного типа документа приводит к сбою моего JavaScript в WebKit и браузерах Opera - PullRequest
2 голосов
/ 11 июня 2010

Я пытаюсь заставить работать скрипт наведения мыши,

когда нет установленного типа документа, скрипт отлично работает во всех браузерах, которые я тестирую, но сайт выглядит как завтрак для собак

Однако, когда я устанавливаю тип документа в переходный (это должен быть этот тип документа) Firefox и IE8 (и режим Compat) работают нормально Но Opera и браузеры webkit могут отображать только всплывающее окно над сгибом страницы, поэтому, если прокрутить страницу вниз и перейти к изображению, всплывающее окно появится над видимой страницей.

И я не могу понять, почему в коде есть несколько экземпляров document.all, но мои попытки заменить их нарушили код, кроме того факта, что он работает в Firefox, а не в Opera, заставляет меня думать этот документ.все не проблема

Буду признателен за любую помощь, даже если я просто скажу, почему какой-то тип документа повлияет на Javascript.

Вот сайт без учёта

Вот сайт с типом документа

1 Ответ

1 голос
/ 11 июня 2010

Отличающийся DOCTYPE не повлияет на JavaScript. Вместо этого он будет влиять на html / css рендеринг .

Хотя, возможно, вы захотите рассмотреть некоторые различия , которые могут возникнуть, которые влияют на JavaScript

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

Фактически, без DOCTYPE chrome предполагает, что тип документа - HTML 4.01 Transitional, а не XHTML 1.0 Transitional, как указано на другой странице. Это обычно приводит к различным визуализациям.


Рассматривая ваш Javascript, он выполняет некоторые проверки, чтобы определить, какой это браузер и как он должен его отображать. Лучше всего будет использовать зрелую библиотеку JavaScript, которая корректно поддерживает кросс-браузерную поддержку. Я бы предложил JQuery в качестве примера достойного использования фреймворка. Он имеет плагины для поддержки именно той функции, которую вы пытаетесь реализовать, и многих других.

...