Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Vasia
Зарегистрирован: 05.02.2006 Сообщения: 8 Откуда: Москва
|
Добавлено: Вс Фев 05 2006 20:03 Заголовок сообщения: Как отловить появление верт. полосы прокрутки во фрейме |
|
|
Уважаемые. Всем здравстуйте.
Мы люди не здешние (в основном все QB, QC, да MASM). Помогите пожалуйста со скриптом разобраться.
На странице два фрейма. Первый со скролом = NO, второй - рабочий имеет скрол AUTO. Во второй фрейм загоняются таблицы разных размеров. В одном случае (таблица маленькая) вертикальной полосы прокрутки нет, в другом - табл. большая - она есть.
Внимание вопрос:
1. Как с помощью, например, Java Script понять, что полоса прокрутки есть?
Сейчас, независимо от размеров таблицы я рисую в самом её конце стрелку, направленную вверх, при нажатии на которую она меняет цвет и отсылает нажавшего на неё в начало таблицы.
Хотелось бы рисовать её только в случае появления полосы прокрутки.
Внимание, вопрос:
2. Как в этом случае правильно оформить document.write("..."); для следующей последовательности тегов:
<p ALIGN="right">
<a href="Cont_CH3.htm#Begin" OnMouseOut="na_restore_img_src ('image6', 'document')" OnMouseOver="na_change_img_src('image6', 'document', '../Menu/Menu1/Begin_over.png', true);" target="_parent">
<img src="../Menu/Menu1/Begin.png" width="44" height="57" border="0" name="image6" alt="В начало страницы" align="middle">
</a>
</p>
Всё это делается в NAMO WEB EDITIR. Все мои попытки сформировать правильный document.write для тега <a ... /a> терпят полной провал, приводят к ошибке, которая требует от меня дополнительной, мифической закрывающей скобки ).
Заранее благодарю за внимание |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
beliy
Зарегистрирован: 10.12.2004 Сообщения: 124 Откуда: Москва
|
Добавлено: Пн Фев 06 2006 15:50 Заголовок сообщения: |
|
|
на сколько я помню, document.write очень плохо реагирует на перевед строки, тобишь считает что дальше пойдет следующая команда, но видит что эта не окончена.. и ругается.
перед выводом замените все переводы строк на пробелы или на ничто.. и экранируйте кавычки |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
beliy
Зарегистрирован: 10.12.2004 Сообщения: 124 Откуда: Москва
|
Добавлено: Пн Фев 06 2006 15:52 Заголовок сообщения: |
|
|
насчет прокрутки:
попробуйте использовать document.offsetHeight может поможет |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Vasia
Зарегистрирован: 05.02.2006 Сообщения: 8 Откуда: Москва
|
Добавлено: Пн Фев 06 2006 22:00 Заголовок сообщения: Beliy от Vasia |
|
|
Я в конце написал, что использую NAMO, который воспринимает протяженно-сложенный тег, как одну строку. Поэтому, как мне кажется, пробелы здесь не причем. Кстати, тот же Top Style выводит его в document.write одной строкой.
И второе. Что значит экранировать кавычки? Я ещё в этих терминах very bed.
Но, все равно спасибо, что откликнулись. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
beliy
Зарегистрирован: 10.12.2004 Сообщения: 124 Откуда: Москва
|
Добавлено: Пн Фев 06 2006 23:35 Заголовок сообщения: |
|
|
Цитата: | Я в конце написал, что использую NAMO, который воспринимает протяженно-сложенный тег, как одну строку. Поэтому, как мне кажется, пробелы здесь не причем |
такая ошибка обычно возникает при попытке вывести многострочный код при помощи JS.
не имеет значения на чем Вы пишете, важно то как воспринимает это браузер. попробуйте просмотреть код результирующей страницы в Iternet Explorer это (Вид->Просмотр HTML кода).
в вашем случае код должен выглядеть так:
Код: |
document.write('<p ALIGN="right"><a href="Cont_CH3.htm#Begin" OnMouseOut="na_restore_img_src (\'image6\', \'document\')" OnMouseOver="na_change_img_src(\'image6\', \'document\', \'../Menu/Menu1/Begin_over.png\', true);" target="_parent"><img src="../Menu/Menu1/Begin.png" width="44" height="57" border="0" name="image6" alt="В начало страницы" align="middle"></a></p>'); |
document.write() используется для вывода ОДНОЙ строки, строка в данном случае заключена в одинарные кавычки.
чтобы внутри строки использовать одинарные кавычки, перед ними нужно ставить знак "\" - это ЭКРАНИРУЕТ кавычку и JS считает ее частью строки, а не концом строковой константы.
PS возможно будет еще на чтото ругаться, такчто можно экранировать также "/", "<", ">". но по моему не нужно.
Удачи! |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
Vasia
Зарегистрирован: 05.02.2006 Сообщения: 8 Откуда: Москва
|
Добавлено: Вт Фев 07 2006 21:40 Заголовок сообщения: Beliy от Vasia |
|
|
Спасибо за код. Все получилось. Правда не сразу.
А вот с document.offsetHeight не все так просто. Он у меня дает значение undefined. Причем на нескольких компах проверял.
Так, что проблема c прокруткой так и осталась не решенной.
Было бы, конечно здорово, если бы как в Ассемблере - пришло переполнение - получи фашист гранату, то бишь взведенный флаг.
А здесь все как не у людей. Ведь что интересно. Когда создаются и описываются фреймы, в них устанавливаются флаги для скрола. Так почему нельзя было предусмотреть вывод аналогичного флага в момент появления полосы прокрутки. Это даже и выглядило бы изящно.
И теперь что? Анализировать клиентский монитор? А если он (клиент) не скромный, выводит кроме обычной шапки браузера еще и строки для Яхи и/или какой-нибудь другой Гугли, работает с нестандартным РС разрешением, например 1024х900 или 960х600, что приводит к изменению размеров шрифта, строки и самой выводимой таблицы. В результате рассчитать размер рабочего фрейма не так и просто. Все получается на соплях.
Однако, вероятно, так и придется ваять, расширяя исходник, что очень не хотелось бы делать.
Но, в любом случае, большое спасибо за код и поддержку.
Было очень приятно пообщаться. |
|
Вернуться к началу |
|
![](templates/subSilver/images/spacer.gif) |
|