Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   screen.width в браузере opera (https://javascript.ru/forum/css-html/20746-screen-width-v-brauzere-opera.html)

cyklop77 15.08.2011 22:56

screen.width в браузере opera
 
скажите пожалуйста чем можно заменить такой скрипт в браузере opera?

if (screen.width < '1024') 
{
alert(6);
document.write ('<link rel="stylesheet" type="text/css" href="css/alt_styles.css" />'); 
}


в других браузерах он работает.

и если не трудно поясните с чем это связано. как я понимаю в модели js для opera нет свойства width?

B@rmaley.e><e 15.08.2011 23:38

Неправильно понимаете.
alert( screen.width )


Цитата:

Сообщение от cyklop77
поясните с чем это связано

Что связано? Вы показали скрипт и сказали, что он не работает. А что он должен делать-то?

cyklop77 16.08.2011 00:00

B@rmaley.e><e , подключать определенный файл стилей в зависимости от разрешения экрана.
у меня появилось подозрение, что сам скрипт все таки рабочий, но document.write дописывает тэг <link> не между тэгами <head></head>/ поэтому опера глючит. возможно такое?

B@rmaley.e><e 16.08.2011 00:03

У Вас там даже alert есть, он-то куда девается? Если он срабатывает, проблема, очевидно, не в screen.width.

cyklop77 16.08.2011 00:13

извиняюсь за тупизм. еще раз.

есть скрипт
alert(0);
	if (screen.width < '1024') 
	{
		alert(6);
	   document.write ('<link rel="stylesheet" type="text/css" href="css/alt_styles.css" />'); 
	}
	else
	{
		document.write ('<link rel="stylesheet" type="text/css" href="css/basic_styles.css" />'); 
	}


разрешение моего монитора 1200 на сколько то.
скрипт срабатывает, результат - подключение файла стилей basic_styles.

если меняю разрешение на 800 x 600 , то скрипт не срабатывает и alert(6) не выводится(подключается опять basic_styles).

alert(0) выводится в любом случае.

во всех браузерах, кроме опера таких проблем нет, то есть скрипт работает корректно (подключает файлы стилей, соответствующие разрешению экрана)

B@rmaley.e><e 16.08.2011 00:19

Ну так замените alert(0) на alert(screen.width) (а ещё лучше — alert(JSON.stringify(screen))) и посмотрите, чему равно width в Опере.

cyklop77 16.08.2011 00:40

сделал как вы советовали.
при моем рабочем разрешении (1280 на сколько то)
во всех браузерах alert(screen.width) =1280.

далее меняю разрешение на 800х600 при помощи intel graphic media accelerator driver.
во всех браузерах alert(screen.width) =800.
в опера alert(screen.width) =1280.

devote 16.08.2011 01:13

а зачем цифра 1024 в ковычках??
if (screen.width < '1024')

devote 16.08.2011 01:14

Цитата:

Сообщение от cyklop77
в опера alert(screen.width) =1280.

Может после смены разрешения стоит перезапустить оперу

B@rmaley.e><e 16.08.2011 01:26

Попробуйте screen.availWidth вместо width.

cyklop77 16.08.2011 01:28

devote,
цифра в кавычках. пробовал и без кавычек. результат один и тот же.

пробовал screen.availWidth результат тот же.

перезапуск оперы после смены разрешения помог. всем спасибо)

cyklop77 16.08.2011 02:02

все таки document.write пишет тэг <link> в неположенное спецификацией место. в итоге валидатор ругается. не подскажете какими средствами можно прописать тэг <link> в определенное место в документе. например между тэгами <head></head>.

вот адрес рабочей страницы, если интересно http://h23771.srv3.test-hf.ru/test_25_2/

вот замечания валидатора http://validator.w3.org/check?uri=http%3A%2F%2Fh23771.srv3.test-hf.ru%2Ftest_25_2%2F&charset=%28detect+automatical ly%29&doctype=Inline&group=0

devote 16.08.2011 02:28

<script type="text/javascript"> 
//<!--
	if (screen.width < 1024) 
	{
	   document.write ('<link rel="stylesheet" type="text/css" href="css/alt_styles.css" />'); 
	}
	else
	{
		document.write ('<link rel="stylesheet" type="text/css" href="css/basic_styles.css" />'); 
	}	
//-->
</script>
Вот так сделай и все будет гуд

cyklop77 16.08.2011 02:33

спасибо

devote 16.08.2011 10:36

cyklop77,
ты не подумай, я не прикалываюсь... Говорю серьезно. Просто смотрю на код выше что я написал, кажется что я мол прикололся закрыв его в комментарий. Но это не так. Как известно, внутри тега script комментарии ставятся двумя слешами или слеш-звезда. А я закомментил HTML коммент внутри скрипта, тоесть скрипт работать будет нормально, и при этом w3c ничего не ругнеться, так как он не обращает внимание на тег script и когда находит html комментарий, считает это простым комментарием, но в реале там вполне работающий код.

B@rmaley.e><e 16.08.2011 10:42

devote, только правильнее (в случае XHTML) использовать секции CDATA.

devote 16.08.2011 10:49

Цитата:

Сообщение от B@rmaley.e><e
devote, только правильнее (в случае XHTML) использовать секции CDATA.

Не спорю, но ему надо что бы валидатор не ругался, а то что я ему дал этого достаточно, валидатор скажет что все ок

cyklop77 16.08.2011 18:12

и не думал. спаибо за интересный приём:dance:

x-yuri 17.08.2011 08:09

Цитата:

Сообщение от devote
cyklop77,
ты не подумай, я не прикалываюсь... Говорю серьезно. Просто смотрю на код выше что я написал, кажется что я мол прикололся закрыв его в комментарий. Но это не так. Как известно, внутри тега script комментарии ставятся двумя слешами или слеш-звезда. А я закомментил HTML коммент внутри скрипта, тоесть скрипт работать будет нормально, и при этом w3c ничего не ругнеться, так как он не обращает внимание на тег script и когда находит html комментарий, считает это простым комментарием, но в реале там вполне работающий код.

Цитата:

Сообщение от B@rmaley.e><e
devote, только правильнее (в случае XHTML) использовать секции CDATA.

а что изменится, если валидатор перестанет ругаться? И, собственно, зачем в данном случае подключать css динамически?

cyklop77 21.08.2011 00:26

подключаю css динамически потому, что для определенного разрешения экрана включается определенная разметка. то есть например пользователи с разрешением мониторов 800x600 не получат очень больших блоков и шрифтов и лишних полос прокрутки соответственно.

B@rmaley.e><e 21.08.2011 11:05

Цитата:

Сообщение от cyklop77
пользователи с разрешением мониторов 800x600

Media queries?

devote 21.08.2011 12:23

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 121578)

не устали еще пичкать людей тем, что все равно никто делать не будет... ибо нам может оно и нравится. но вот заказчикам хоть убей старые браузеры нужно.. А все по простой причине, потому как у самих в офисах стоят ХР и ИЕ7, а некторые даже шестой заставляют поддержать при разработке. Для себя это все хорошо и красиво, для заказчиков это все на*уй не нужно.

x-yuri 22.08.2011 14:37

Цитата:

Сообщение от cyklop77
подключаю css динамически потому, что для определенного разрешения экрана включается определенная разметка. то есть например пользователи с разрешением мониторов 800x600 не получат очень больших блоков и шрифтов и лишних полос прокрутки соответственно.

еще раз, зачем в данном случае подключать css динамически? Можно добавить класс в body, и ориентироваться в css на его наличие/отстутствие. Вариант с отдельным файлом стилей плох тем, что стили элемента раскиданы по файлам.

Цитата:

Сообщение от devote
не устали еще пичкать людей тем, что все равно никто делать не будет...

научи, как себя вести?

Цитата:

Сообщение от devote
ибо нам может оно и нравится. но вот заказчикам хоть убей старые браузеры нужно.. А все по простой причине, потому как у самих в офисах стоят ХР и ИЕ7, а некторые даже шестой заставляют поддержать при разработке. Для себя это все хорошо и красиво, для заказчиков это все на*уй не нужно.

невнимательно читал статью? И заказчики, они разные бывают...

devote 22.08.2011 15:58

Цитата:

Сообщение от x-yuri
невнимательно читал статью? И заказчики, они разные бывают...

Какое имеет отношение писанина в блоге к тому что я сказал? Речь не о том как сделать сайт резиновым, а речь о том что приходиться делать десятки костылей ради какого нить заказчика который хоть убей просит ИЕ 6/7. Как бы я не старался писать под новые стандарты, старые браузеры их с трудом понимают... И приходиться писать кучу костылей. Вот и человек написал простой костыль, причем до боли простой... не требующий каких-то там знаний о технологиях медиа и т.д.

x-yuri 23.08.2011 16:22

Цитата:

Сообщение от devote
Какое имеет отношение писанина в блоге к тому что я сказал?

Цитата:

media queries понимают все разумные браузеры. Для ie же есть Respond.js
---
Цитата:

Сообщение от devote
Речь не о том как сделать сайт резиновым, а речь о том что приходиться делать десятки костылей ради какого нить заказчика который хоть убей просит ИЕ 6/7.

в чем проблема, если это соответствующим образом оплачивается?

Цитата:

Сообщение от devote
Как бы я не старался писать под новые стандарты, старые браузеры их с трудом понимают... И приходиться писать кучу костылей.

кто-то советует писать под стандарты ради того, чтобы писать под стандарты?

Цитата:

Сообщение от devote
Вот и человек написал простой костыль, причем до боли простой... не требующий каких-то там знаний о технологиях медиа и т.д.

человек написал ненужный костыль

devote 23.08.2011 20:02

Вложений: 1
Цитата:

Сообщение от x-yuri
Для ie же есть Respond.js

Ну вот и еще один костыль

Я тоже давно как то писал костыль для работы с круглыми углами, кросс-браузерное решение, знаю что много мусора понаписал но писалось быстро, но зато не нужно делать лишних телодвижений, просто подключаем скрипт после jQuery и работаем с параметром border-radius как будто он есть в IE, вот:

x-yuri 24.08.2011 16:05

Цитата:

Сообщение от devote
Ну вот и еще один костыль

извини, а как по-другому, если это надо? Или необходимо ждать, пока все браузеры начнут _это_ поддерживать, а все которые не поддерживают умрут (что довольно размывчатое понятие)?

andriy159 12.05.2018 00:03

Уберите апостроф. Как можно сравнивать числительное с текстовым в сторону меньшинства?


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