Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   И часто в Safari такое? (https://javascript.ru/forum/css-html-browser/4909-i-chasto-v-safari-takoe.html)

leprosus 29.08.2009 12:25

И часто в Safari такое?
 
Вложений: 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Safari-Bag</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <script type="text/javascript">
            var allTags = document.getElementsByTagName("*");
            var checkingText = document.createTextNode("Checking - document.getElementsByTagName(\"*\")");
            var typeofText = document.createTextNode("typeof -> " + typeof allTags);
            var toStringText = document.createTextNode("toString() -> " + allTags.toString());
            var versionText = document.createTextNode("version -> " + navigator.userAgent);

            document.body.appendChild(checkingText);
            document.body.appendChild(document.createElement("br"));
            document.body.appendChild(document.createElement("br"));
            document.body.appendChild(typeofText);
            document.body.appendChild(document.createElement("br"));
            document.body.appendChild(toStringText);
            document.body.appendChild(document.createElement("br"));
            document.body.appendChild(versionText);
        </script>
    </body>
</html>

Результат:
http://javascript.ru/forum/attachmen...1&d=1251534317
Остальные браузеры (Opera, FF, MSIE, и даже Chrome) возвращают корректный typeof -> object

Какие ещё грубые косяки есть в этом замечательном браузере...
Поделитесь, кто что знает, чтоб в дальнейшем на грабли не прыгать.

Octane 29.08.2009 13:07

Работе это никак не мешает. Тем более, что allTags.toString() выдает тоже разные результаты.

leprosus 29.08.2009 19:29

Цитата:

Сообщение от Octane (Сообщение 28767)
Работе это никак не мешает.

Мне для проекта нужны перегруженные функции, которыми пользуются ещё 2 человека (русский и америкос); так вот приходится ради safari изварачиваться ужём при анализе аргументов.

Цитата:

Сообщение от Octane (Сообщение 28767)
Тем более, что allTags.toString() выдает тоже разные результаты.

То есть?
Все браузеры возвращали object.

----

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

Octane 29.08.2009 20:25

Цитата:

Сообщение от leprosus
Цитата:

Сообщение от Octane
Тем более, что allTags.toString() выдает тоже разные результаты.

То есть?
Все браузеры возвращали object.

Браузеры покажут: [object HTMLCollection], [object NodeList] и [object]. А есть еще [object StaticNodeList], возвращаемый методами querySelector и querySelectorAll. Так что если вы пытаетесь идентифицировать тип объекта через typeof, значит действуете не правильно, определяйте наличие свойств:

var list = document.getElementsByTagName("*");
	alert("length" in list); // какая-то коллекция элементов, которую можно перебрать в цикле
	alert(!!list.push); // определяем, Array ли это?


Часовой пояс GMT +3, время: 23:02.