Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2018, 09:57
Аспирант
Отправить личное сообщение для Dyec Посмотреть профиль Найти все сообщения от Dyec
 
Регистрация: 09.01.2018
Сообщений: 32

Сделал функцию автообновления под Opera Mobile. Есть вопрос
Всем привет. Вообщем, с трудом, но доделал эту функцию, которой нет в Opera Mobile(см. скриншоты и код ниже). Буду рад любой критике. Вот один вопрос:

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

Только начал изучать JS, строго не судите. Как его внедрить в браузер, смотрите в гугле.

Вот собственно сам скрипт:
if(!self.parent.frames.length) {
  
  var d = document;
  var e = d.createElement('button');
  var setCss = 'font-size: 27px; position: fixed; left: 0px; height: 48px; width: 57px; background: #e3e8e1; color: #3F3F3F; font-weight: 900; border-radius: 0 6px 6px 0; border: 1px solid gray; z-index: 9999; opacity: 0.9; filter:alpha(opacity=90); ';
  var stopX = '✖';
  var startO = '↻';
  var sec;
  var refreshId;
  var delinfo;

  function reloads() { 
  location.reload();
  }

  function timerInfo() {
  var e = d.createElement('button');
  e.style.cssText = setCss+'top: 150px;';
  d.documentElement.appendChild(e);
  delinfo = e;
  e.innerHTML = '<span id="timer"></span>';
  e.onclick = function() {
  callback();
  //пауза
     }
   }

  function timerSec() {

  if(sec<=9) {
  sec='0' + sec; }

  if(document.getElementById) {
  timer.innerHTML=sec; }

  if(sec==00) {
  reloads();
  return false; }

  sec--;

  refreshId = setTimeout(timerSec, 1000);
 }

  function askSeconds() {
  var ask = prompt('Интервал в секундах (2-960):', 5);

  if(!ask || isNaN(ask)) {
  callback();
  } 
else if(ask < 2) {
  alert('Минимум 2 секунды!');
  callback();
  }
else if(ask > 960) {
  alert('Максимум 960 секунд!');
  callback();
  } else {
  sessionStorage.setItem('key', ask);
  sec = ask;
  timerInfo();
  timerSec(sec);
    }
  }

  function startrefresh() {
  e.style.cssText = setCss+'top: 100px;';
  d.documentElement.appendChild(e);
  e.innerHTML = startO;
  e.onclick = function() {
  askSeconds();
 stopautorefresh();
    }
  }

  function stopautorefresh() {
  e.style.cssText = setCss+'top: 100px;';
  d.documentElement.appendChild(e);
  e.innerHTML = stopX;
 e.onclick = function() {

  sessionStorage.clear();
  clearTimeout(refreshId);
  delinfo.outerHTML = '';
  return startrefresh();
    }
  }

  if(sessionStorage.getItem('key')) {
  sec = sessionStorage.getItem('key');
  stopautorefresh();
  timerInfo();
  timerSec(sec);
  } else {
  startrefresh();
   }
}


Кнопка всегда слева в фиксированном месте экрана и доступна в любой части страницы.
Может кому пригодится.
Спасибо всем!
Изображения:
Тип файла: jpg shot_625_2018_01_31.jpg (14.4 Кб, 2 просмотров)
Тип файла: jpg shot_626_2018_01_31.jpg (10.8 Кб, 1 просмотров)
Тип файла: jpg shot_627_2018_01_31.jpg (11.5 Кб, 1 просмотров)

Последний раз редактировалось Dyec, 02.02.2018 в 14:55. Причина: Решил пару проблем. Поправил отступы в коде. Перезалил скрины. Решил проблему с убиранием trayInfo().
Ответить с цитированием
  #2 (permalink)  
Старый 29.01.2018, 10:44
Аспирант
Отправить личное сообщение для Dyec Посмотреть профиль Найти все сообщения от Dyec
 
Регистрация: 09.01.2018
Сообщений: 32

Скрипт заточен под настройки масштаба 100% в браузере.
Чтобы этот скрипт работал в браузере Opera Mobile, нужно:
1) Прописать в адресной строке opera:config
2) Перейти во вкладку UserPrefs
3) Поставить галочки под строками User JavaScript и User JavaScript on HTTPS
4) В поле User JavaScript File прописать путь к файлу где хранится, например C:/papka/file.js, так же можно через запятую и пробел писать другие пути к файлам, у меня их 5.
5) Снять галочку с Disable Client Refresh To Same, иначе страница обновится только раз после запуска.
6) Поставить галочку Always Load User JavaScript, для загрузки скрипта на всех страницах.

Последний раз редактировалось Dyec, 01.02.2018 в 05:08.
Ответить с цитированием
  #3 (permalink)  
Старый 29.01.2018, 22:15
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

может лучше сделать на основе MutationObserver?
https://developer.mozilla.org/ru/doc...tationObserver

поддерживается Opera mobile с 15 версии
Ответить с цитированием
  #4 (permalink)  
Старый 30.01.2018, 00:43
Аспирант
Отправить личное сообщение для Dyec Посмотреть профиль Найти все сообщения от Dyec
 
Регистрация: 09.01.2018
Сообщений: 32

Сообщение от j0hnik Посмотреть сообщение
может лучше сделать на основе MutationObserver?
https://developer.mozilla.org/ru/doc...tationObserver

поддерживается Opera mobile с 15 версии
у меня ОС Symbian ^3, и опера последней версии 12. Врятли это MutationObserver будет доступно.
Ответить с цитированием
  #5 (permalink)  
Старый 30.01.2018, 15:40
Аспирант
Отправить личное сообщение для Dyec Посмотреть профиль Найти все сообщения от Dyec
 
Регистрация: 09.01.2018
Сообщений: 32

решил проблему с таймером, теперь не отстаёт. И временное решение проблемы 1). Тему отредактировал всесте с кодом.
Ответить с цитированием
  #6 (permalink)  
Старый 30.01.2018, 15:48
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

Сообщение от Dyec
Тему отредактировал всесте с кодом.
С отступами беда.
Ответить с цитированием
  #7 (permalink)  
Старый 30.01.2018, 22:12
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Стили можно добавить тем же скриптом
просто дописать в конец тега.
document.querySelector('style').innerHTML += '#col{background-color: red;}';


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

Для чего вам нужна эта программа?
Ответить с цитированием
  #8 (permalink)  
Старый 31.01.2018, 21:04
Аспирант
Отправить личное сообщение для Dyec Посмотреть профиль Найти все сообщения от Dyec
 
Регистрация: 09.01.2018
Сообщений: 32

Сообщение от Nexus Посмотреть сообщение
С отступами беда.
поправил.
Ответить с цитированием
  #9 (permalink)  
Старый 31.01.2018, 21:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Dyec
поправил.
http://jsbeautifier.org/
Ответить с цитированием
  #10 (permalink)  
Старый 31.01.2018, 21:34
Аспирант
Отправить личное сообщение для Dyec Посмотреть профиль Найти все сообщения от Dyec
 
Регистрация: 09.01.2018
Сообщений: 32

Сообщение от j0hnik Посмотреть сообщение
Стили можно добавить тем же скриптом
просто дописать в конец тега.
document.querySelector('style').innerHTML += '#col{background-color: red;}';


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

Для чего вам нужна эта программа?
Спасибо, по эксперемнтирую, только тут беда в том, что кнопка встраивается в саму страницу сайтов, т.е. Если вылезет ошибка 502, 403, 404 (белая страница), то кнопки нет. На этом сайте position: fixed то работает, то нет. Кнопка зависает в одном месте и не прыгает вместе с прокруткой. Меняв координаты на низ top : 547px;, она привязывается к масштабу страницы вниз на 547pх и отступ слева 60pх, а не экрана смартфона. Я так понял кнопка в HTML и css страницы сайтов внедряется, вот и спрашиваю как привязать стиль из браузера по пути file:// или свой создать с html. Чтобы она всегда в одном месте была.

я же не спрашиваю разработчикоков зачем придумали и сделали функцию автообновления в некоторых браузерах? Нужная и полезная всем вещь.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как быть, Jquery не отрабатывает под Opera Mobile? free_style jQuery 2 04.09.2014 12:49
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37