За последние 24 часа нас посетили 17335 программистов и 1721 робот. Сейчас ищут 1554 программиста ...

Вызов javascript из css?

Тема в разделе "JavaScript и AJAX", создана пользователем yuriki, 1 май 2010.

  1. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Добрый день.

    Я не программист и не верстальщик, поэтому буду описывать как понимаю, но жду Вашей помощи.

    Есть html код. Было желание его вычистить определенным образом, чтобы только на стороне пользователя подгружался определенный текст и т.п.

    Сам код был вынесен во внешний .js файл и
    <script language="JavaScript">var 1; document.write(1); </script> через докуменврайт вызывается через var.

    Все работает корректно, все хорошо, но на странице образовалось около 10 таких вставок.

    Каким образом это можно вынести из кода?

    Можно ли средствами CSS вызывать действие того же скрипта? Или Ajax?

    Посоветуйте что-нибудь, только простым языком :)
     
  2. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Хм... Может я разделом или форумом ошибся? :(
     
  3. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Фокус в том, что те, кто могут ответить, бывают тут редко.
    А те кто не могут - ругаются со мной в других разделах :D

    Средствами CSS вызывать JS, в общем случае нельзя. Отдельные варианты - есть.

    Но вопрос в другом.

    Какая конкретная цель стоит?
    Что хотим получить/сделать?
     
  4. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Что хотим сделать - уменьшить количество кода на странице.

    Да, уже простым методом что описал выше - получается, но остаются вставки, которые не хотелось бы иметь в коде.
    Условно говоря - более 4 млн страниц, по ряду причин переделка будет не самым лучшим вариантом, в силу специфики проекта. Борьба идет реально за каждый байт :)

    Как исключить эти вставки - аяксом или другим методом, главный вопрос.
     
  5. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Ммм. Не до конца понял мысль.

    Хотите избавиться от дублирования текста в хранимых страницах?
    Тогда можно посмотреть в сторону SSI.
    Страница как бы составляется из разных блоков/кусочков. Делается это полностью на стороне сервера, клиент получает уже готовую страницу.

    Альтернатива это страницы с фреймами и аякс подгрузка контента.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет. у него походу в некоторых местах просто стоит скрипт в рандомных местах, который видимо без процедур и функций тупо делает документ.врайт(ляляля).

    привидите пару примеров пожалуйста целиком. страшиться, что покрадут пару строк текста - не надо.
     
  7. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    Там и так в php include собирается страница, с этим норм все. Нужно просто собирать на стороне клиента определенный код, чтобы сам файл основной весил меньше.



    примеры просты

    в страницу вставляется <script language="JavaScript">var 1; document.write(1); </script>

    а в подключаемый js файл

    var 1='<table width="100%" cellspacing="0" cellpadding="0"><tr><td width=60 align="centrer" valign="top"><a href="http://www.***.ru/**.html"><img src='prices/86_total.jpg' border=0 width=60 hspace=10 alt=''></a></td><td width="90%"> <table width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="90%"> <table width="100%" сellspacing="0" cellpadding="0"> <tr> <td height="20" bgcolor="#0f0e85" nowrap><p style="margin-left: 10px; margin-right: 10px"><font color="#FFFFFF"><strong>***</strong></font></p></td><td width="95%" bgcolor="#f3f4f8"><p style="margin-left: 10px; margin-right: 10px">Действует с 01.01.2009</p></td></tr></table></td></tr><tr><td><p style="margin-top: 4px">***<br><br></td></tr></table>';

    Тем самым кучу таблиц выносим ненужных + вынести бы сами скрипты теперь вставки вида

    <script language="JavaScript">var 1; document.write(1); </script>
    <script language="JavaScript">var 2; document.write(2); </script>
    <script language="JavaScript">var 3; document.write(3); </script>
    <script language="JavaScript">var 4; document.write(4); </script>
    <script language="JavaScript">var 5; document.write(5); </script>
    <script language="JavaScript">var 6; document.write(6); </script>


    Реально - просто выкинуть вот эти скрипты из кода осталось, аяксом или как - черт знает :) [/quote]
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    не, но у меня толь один вопрос возникает: зачем?
    Чем не нравится сгенерировать на сервере полностью страницу и отдать?


    ну да, а js пользователь у нас уже не загружает? Тут, конечно, сейчас прибегут и скажут про кэширование, поэтому я ещё спрошу: содержимое js файла с хтмлём меняется?
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А по-моему бред какой-то.
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    yuriki
    кто это придумал?
     
  11. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    объем данных - 1 страница должна весить не больше определенных рамок.

    JS файл 1 и занимает мало место, в отличие от "дубляжа" этих данных во всех файлах.

    на части страниц да, на части индивидуально


    я не знаю какой дебил придумал всю систему, которая сейчас работает именно так и просто уже "вешается", мои изменения позволяют ей работать стабильно, ибо объем данных сократился, но нужно еще это "оптимизировать".

    Менять все - более 1млн рублей вкладывать, пока не готовы.


    Люди :) яж не спрашиваю бред или не бред, я понимаю что идиотизм, но таковы реалии.

    Вы пожалуйста ответте на вопрос, можно ли из кода снести еще и эти скрипты? Любым макаром
     
  12. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Я не могу увязать эти две вещи

    Кто мешает сделать все на include?
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    нельзя их снести, они у тебя судя по всему выполняют аналог include
    заменить можно только на аналогичные решения, но соответствующие команды

    Код (Text):
    1. include 'file.php';
    или
    Код (Text):
    1. <!--#include file="included.html" -->
    В любом случае останутся.
     
  14. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    любой инклюд - это общий файл, допустим элеммент навигации, который нужно сменить, но для 10 страниц делать отдельный инклюд не целесообразно, т.к. увы система настроена так, что создается несколько или 1 файл для каждой страницы - я не знаю зачем такая архитектура, раньше собиралось на ssi , но я сделал инклюды и скрипты - система вместо 5 секунд, стала обрабатывать запросы за 2 секунды, если выкинуть и скрипты - скорость еще увеличится.

    Переделывать - нет возможности, я бы с БД конечно работал лучше. Единственный вариант для системы доходяги - убрать и скрипты.

    Как их можно их вынести из тела документа? - главный и основной вопрос
     
  15. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Что-то свежо предание, да верится с трудом.

    Код (Text):
    1. rm -rf ./
    в корне проекта
    Поскольку читать, кто-то не умеет.
    Сдается мне, что имеет место быть банальный plain-html сайт, который таким образом оптимизировать не нужно.
    И 2с или 5с для него - это нонсенс, либо там нагрузка колоссальная.
     
  16. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    :DD
    yuriki
    ссылку на ресурс можно, посмотрим что они там делают...
    тупо удалить чтоле? или просто вынести в отдельный js файл?
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если содержимое переменных задано строго и заранее и по ходу работы со страницей не меняется НЕТ СМЫСЛА их куда-то выносить.

    Если эти "переменные" у вас не меняются между страницами и вобще никогда не меняются, и вы поставили целью своей жизни сэкономить десяток-другой мегабайт трафика в месяц - то да. Выностите в отдельный js файл.

    Но так как я в это не верю, то считаю, что надо формировать страницу целиком на стороне сервера и отдавать клиенту СО ВСЕМИ ТАБЛИЦАМИ уже готовую. Просто таблицы не надо будет через жо выковыривать из жаваскрипта, а сразу они будут присутствовать в готовых местах. =)

    Аяксом можно сделать то, что у вас сейчас. Смысла ноль.
     
  18. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    это локальная система, скорость работы которой напрямую зависит от объема каждого документа


    не понятно :( если можно подробнее

    тупо чтобы самих упоминаний не было, но при этом функционал остался

    скажите как, я вижу смысл.

    Я за этим и пришел, я не ищу смысл жизни :) но мне нужно знать как сократить объем каждого из документов за счет пусть даже аякса
     
  19. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    yuriki
    Оно несокращаемое. Можно сэкономить 5-10 байт на каждый
    Код (Text):
    1. document.write(1);
    но и не более того.

    Пожмите все документы при помощи gzip и отдавайте в таком качестве(сжатыми) с соответствующими заголовками.

    Очень близко по смыслу к format c: но для конкретного каталога
     
  20. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Отдаём страницу, сжатую с помощью ZLib.
    Отдаём браузеру заголовки (x-gzip или gzip - определяйте сами и добавляйте).

    PHP:
    1. <?php
    2.  
    3. header("Cache-Control: public");
    4. header("Cache-Control: max-age=" . (time() + (3600 * 24)));
    5. header("Expires: " . date("D, j M o H:i:s ", strtotime("tomorrow")) . "GMT");
    6.  
    7.  
    8. // Страница ...
    9.  
    10. ?>
    Поможет немного снизить трафик и нагрузку.
    Хотя я ж не знаю, чего за монстрский проект там
     
  21. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Скорее всего чудо-мастера лечат не ту болячку.

     
  22. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    там нет болячек, там есть полутруп, деньги на переделку которого выделят ток в следующем году.

    возможно, попробую

    Хотелось бы еще услышать ответ от igordata по аяксу
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ответ простой: аякс не спасет вас, но на аяксе можно хоть все сделать. толку еще раз - ноль.

    Если данные ВСЕ РАВНО должны уйти к пользователю, то похрен как они уйдут, через аякс - это тот же текст, только его надо запросить изпод страницы. Через вставку из скрипта - но скрипт это тот же текст, только в другом файле.

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

    Вы пожалуйста подробнее изложите, ибо если эти таблицы для каждой страницы разные, значения в них меняются - вы НИКАК не отвертитесь от передачи этих данных клиенту (броузеров-телепатов массово еще не выпускают).

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


    Давайте уже хватит играть в партизана, рассказывайте целиком. =)
    Зачем изобретать велосипед, уже все обсосано до костей. Говорите.
     
  24. yuriki

    yuriki Активный пользователь

    С нами с:
    1 май 2010
    Сообщения:
    17
    Симпатии:
    0
    меняются раз в квартал, часть таких таблиц

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

    Выгрузка идет из программы, на автомате, формируются страницы, сейчас они на инклюдах + javascript, уже легче работает сервер, т.к. при поиске (выборке) он КАЖДУЮ страницу переиндексирует из выделенного кластера.

    Если вынести еще часть кода и оставить только данные в каждом документе - будет замечательно. Хотите верьте, хотетие нет, но реально с 5 до 2х секунд уменьшилось время обработки 1 запроса. Я пробовал тупо снести скрипты, становилось еще чуть быстрее, правда уже безструктурно - т.к. некоторые данные не подгружались
     
  25. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    мм а нельзя ли просто написать новый движок и в один прекрасный момент перенести всю базу на него?
    наймите штатного программиста, платите ему нормально, переделает все полностью за пару месяцев
    сильно сомневаюсь что для этого нужны миллионы как вы говорите