Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Удобный показ скриншотов на AG.ru

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как бы улучшить то что есть? Пытаюсь для Оперы написать небольшой UserJS - но опыта в JavaScript катастрофически не хватает. Может кто поможет.  
Имеем типичную страницы, например http://www.ag.ru/games/batman-arkham-city/screenshots/445774
На ней при начальной загрузке очень неудобно - видно только половину картинки, приходится проматывать.
Как бы сделать так, чтобы при переходе на страницу http://www.ag.ru/games/XXXXXXXX/screenshots/YYYYYYY сразу перекидывал на картинку?
Картинка там лежит в виде <td colspan=2 align=center height=100% class=bw style="background:url(http://screenshots.ag.ru/ag15/geo/19545/149.jpg) center no-repeat">
То есть есть и класс, по классу нужно как-то найти элемент, выдернуть из него style, выдернуть адрес и location.href.
Зацепиться за страницу я смог
if (location.href.match(/ag.ru/) && location.href.match(/screenshots/) )
 
Но я не знаю, как выдернуть элемент и выдернуть из него ссылку. Профи, помогите, полезная штука будет!

Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 13:45 05-03-2014 | Исправлено: xerpal, 13:47 05-03-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
На ней при начальной загрузке очень неудобно - видно только половину картинки, приходится проматывать.  

 
подгони картинку по высоте и ширине 50% к примеру... Вот я подгоняю блоки так:

Код:
position: fixed; display: none; top: 50%; left: 50%;

а потом с js
 

Код:
var height = document.getElementById("WHtmlTable").clientHeight; //получаем высоту блока WHtmlTable
var width = document.getElementById("WHtmlTable").clientWidth; //получаем ширину блока WHtmlTable
 
document.getElementById("WTable").style.display=  "block"; // позволяет показывать элементы. (было ж display: none)
document.getElementById("WTable").style.margin =  "-" + height/2 + "px 0px 0px -" + width/2 + "px"; // в зависимости от ширины и высоты WHtmlTable, выравниваем блок  WTable строго по центру.

 
В нашем случае, id="WHtmlTable", это какой-то элемент (картинка, блок, текст и т.д) находящийся в id="WTable".
Т.е.:

Код:
<div id="WTable"><table id="WHtmlTable">...</table></div>

И получится просто всплывание окна по центру при нажатие...
 

Цитата:
Как бы сделать так, чтобы при переходе на страницу

тоже просто. в JS сделай фокус
 

Код:
document.getElementById("WTable").focus(); //т.е. указываем в картинке id="WTable" и потом, фокусируем на неё...

 
или, уже с помощью брандмауэром, добавив в адресной строке в конце #WTable
т.к. у тебя уже указан там id, ты можешь открывать так:
 

Код:
http://www.ag.ru/games/batman-arkham-city/screenshots/445774#gamma

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:34 05-03-2014 | Исправлено: Sutar, 21:35 05-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
<td colspan=2 align=center height=100% class=bw style="background:url(http://screenshots.ag.ru/ag15/geo/19545/149.jpg) center no-repeat">

 

Код:
if (!document.getElementsByClassName) {
    document.getElementsByClassName=function(cn) {
        var allT=document.getElementsByTagName('*'), allCN=[], i=0, a;
        while(a=allT[i++]) {
            a.className==cn ? allCN[allCN.length]=a : null;
        }
        return allCN
    }
}
 
var els = document.getElementsByClassName('bw');
for(var i = 0; i < els.length; i++)
 if (/screenshots\.ag\.ru/i.test(els[i].style.cssText))
 {
     alert(els[i].style.cssText.replace(/.*url\((http:\/\/screenshots.*)\).*/ig, '$1'));  
 }


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:06 05-03-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
http://www.ag.ru/games/batman-arkham-city/screenshots/445774#gamma

Гениально. А я то велосипед изобретаю. Скрипт уменьшился до неприлично малого и работает
 

Код:
 
// ==UserScript==
// @name AG images
// ==/UserScript==
 
(function() {
if (location.href.match(/ag.ru/) && location.href.match(/screenshots/) && location.href.match('gamma') == null)
{    
location.href=location.href+'#gamma';
}  
}
)();  

Как ещё бы тут прыжок на этот якорь сделать при обновлении? У меня почему то не делает по F5. Хотя при открытии новой ссылки проблем нет - это самое главное.  
 
Cheery
Не хочет пахать. Alert ничего не выдает. На Опере 12.11. В принципе проблема решена через #gamma - но если выйдет поправить это будет ещё удобнее.  

Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 04:00 06-03-2014 | Исправлено: xerpal, 04:05 06-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Не хочет пахать. Alert ничего не выдает. На Опере 12.11.

работает в Опера?
http://jsfiddle.net/SD2us/
значит вы что то делаете не так. скрипт нужно запускать, ессно, когда элемент уже есть на странице.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 04:10 06-03-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
работает в Опера?  http://jsfiddle.net/SD2us/  значит вы что то делаете не так. скрипт нужно запускать, ессно, когда элемент уже есть на странице.

 
Да, по вашей ссылке работает, а в браузере не хочет категорически. Ещё раз повторюсь - это же UserJS, я никакой скрипт не запускаю, это встроенный механизм Оперы. Может тут собака зарыта. Проверьте сами, создайте файлик и туда.

Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 04:57 06-03-2014 | Исправлено: xerpal, 04:57 06-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
это встроенный механизм Оперы

оперы на хромовском движке? тогда где это там добавляется?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 05:58 06-03-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
оперы на хромовском движке? тогда где это там добавляется?

Нет, Опера на Presto ещё. Версия 12.1 же

Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 11:36 06-03-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
попробуйте обновить страницу сайта, с помощью функции "Обновить" (на панели браузера рядом с стрелочками "Назад" и "Вперёд")
Возможно ваш браузер просто не обновил ваш js.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:02 06-03-2014 | Исправлено: Sutar, 20:03 06-03-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
Это был такой тонкий сарказм? Я вообще то программист с 8-летним стажем, просто Яваскрипт плохо знаю.

Всего записей: 1584 | Зарегистр. 08-10-2011 | Отправлено: 00:42 07-03-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Опера на Presto ещё. Версия 12.1 же

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

Код:
addEventListener('load', function (e)
{
 
  if (!document.body)
  {
    return;
  }
 
  if (!document.getElementsByClassName) {  
    document.getElementsByClassName=function(cn) {  
        var allT=document.getElementsByTagName('*'), allCN=[], i=0, a;  
        while(a=allT[i++]) {  
            a.className==cn ? allCN[allCN.length]=a : null;  
        }  
        return allCN  
    }  
  }  
 
  var els = document.getElementsByClassName('bw');  
  for(var i = 0; i < els.length; i++)  
    if (/screenshots\.ag\.ru/i.test(els[i].style.cssText))  
    {  
     alert(els[i].style.cssText.replace(/.*url\((http:\/\/screenshots.*)\).*/ig, '$1'));  
    }
 
}, false);


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:09 07-03-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Удобный показ скриншотов на AG.ru


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru