<
  • Главная
Статьи

Як відключити javascript на сторінці сайту

  1. 2. Тимчасове відключення javascript за допомогою плагінів
  2. 3. Відключення javascript за допомогою букмарклета
  3. Що таке букмарклет?
  4. Розглянемо ключові особливості цього букмарклета:
  5. Розберемо роботу букмарклета з видалення javascript зі сторінок сайту
  6. Обмеження останнього способу

Javascript (чи, коротко - JS) раніше використовувався як засіб для додання інтерактивності веб-сторінок, а також для додаткового форматування сторінки і її елементів, що важко або неможливо зробити за допомогою можливостей html і CSS. У теперішній же час ця мова використовується для створення повноцінних вебпріложеній, які можуть запускатися на сторінках сайтів.

Зазначена інформація - в цій статті - приведена лише для ознайомлення! Ні її автор, ні адміністрація нашого сайту не несуть ніякої відповідальності за її використання або неправильне розуміння. Обговорювані в статті рішення можуть дестабілізувати або повністю порушити роботу деяких сайтів і браузерів.


Тобто, начебто, використання javascript покликане поліпшити життя як розробникам, так і користувачам. Однак, мабуть, немає добра без худа. В даному випадку воно, це «погано», проявляється шляхом зловживання деякими розробниками різного роду технологіями javascript. В результаті ми можемо зустріти сторінки, які стежать, буквально, за кожним кроком користувача. Сторінки, які періодично можуть показувати користувачеві «цікаві» (з точки зору розробників, звичайно) повідомлення та ін.

Тому іноді люди намагаються відключити javascript на деяких сайтах.

Чесно кажучи, і мені, автору цієї статті, один раз остаточно набридла не в міру «інтелектуальна» безглузда розробка сторінок деяких сайтів. Які, замість того, щоб реально допомогти читачеві ознайомитися з вмістом їх сторінок і якось зацікавити, інший раз, навпаки, роблять ВСЕ (!) Зусилля для того, щоб змусити читача покинути їх, так як можна швидше. Там і «мигалки» різні, і «каруселі» (що займають майже полотна браузера), і всливающих форми про "безкоштовних" консультаціях, і т.д., і т.п. Але, іноді і на таких сайтах, все ж, буває корисна інформація. Так, зрідка, але - буває. Тому виникає розумне, законне бажання - весь цей мелькає сміття відключити.

Однак, якщо зробити це ДО завантаження сторінок в браузер, деякі сайти можуть відображатися неправильно, а то і взагалі не відображатися. Це пов'язано з тим, що, нерідко, вміст сторінок подгружается в браузер якраз за допомогою javascript. Він же використовується нерідко для реалізації адаптивної верстки (що дозволяє якісно відображати контент сторінки незалежно від того, який конкретний тип пристрою, через яке проводиться перегляд, а також незалежно від того, яке фактичний дозвіл його екрану). Найчастіше за допомогою JS здійснюється додаткове форматування контенту сторінки (поля, колір шрифту, картинки, розташування елементів один щодо одного і т.д.).

Втім, щодо "якості" відображення сторінок, виконаних в рамках адаптивної верстки. Нерідко, використовуються готові. далеко не завжди вдалі, шаблони на основі javascript, які підприємливі вебмастера просто заповнюють контентом - та й все. Або ж виконані так, що ... Причому, це стосується навіть не стільки до невеликим приватним блогам, скільки до компаній, іноді і великим.
Так ось, інший раз, сторінки, виконані з використанням "адаптивної верстки", просто не хочеться дивитися. Але, це лише зауваження побіжно, про адаптивної верстці поговоримо як-небудь іншим разом.

Тому хорошим рішенням було б - спочатку дати сторінці завантажитися, а ось потім вже - відключити javascript, щоб не заважали.

Правда, природно, частина функціональності сайту при цьому може бути недоступною. Наприклад, не можна буде скористатися пошуком по сайту, не можна буде відкрити меню, що розкриваються (якщо вони доступні не на чистому html + CSS, а за допомогою javascript), послати повідомлення в форму зворотного зв'язку; можуть не працювати ефекти наведення миші на відповідні елементи і ін.

Зрозуміло, що якщо вже на сайті гарячеголові вебмастера наробили різної заважає користувачеві "динамічної інтерактивності" (а то динамічної реклами), то що ж там може бути цікавого, крім можливо, деякої частини корисного контенту? Тому вся ця інтеактівном, ці меню, форми зворотного зв'язку на подібних сайтах бувають просто непотрібними. Тому ліквідувати javascript в 99,9% випадків буває не шкода - після того, як він зробив свою справу, оформивши сторінку.

Але тим не менше. Іноді виникає необхідність, по-швидкому відключивши JS (щоб, повторимося, не заважали деякі «сучасні технології»), переглянути сторінку сайту.

Виникає питання: як це зробити?

Розглянемо можливі способи.

Звичайно, в різних браузерах це робиться по-різному.

Раніше в браузері Firefox була присутня така можливість - була відповідна кнопка. Натиснувши на яку, можна було легко заблокувати функціональність javascript - стосовно конкретної сторінці. Однак, на жаль, починаючи з версії 23, таку можливість з цього браузера прибрали, тепер це реалізується через настройки. Розглянемо, як це реалізується на прикладі браузера Firefox 24 і наступних версій.

Заходимо в настройки, прописавши в адресному рядку браузера:

about: config

до речі, без пробілу (!)

З'явиться вікно, що, мовляв, слід бути обережним, а то функціональність браузера може бути порушена. Погоджуючись з написаним і, справді, обіцяючи собі бути обережними, натиснувши клавішу «Я обіцяю, буду обережний!», Потрапляємо на сторінку налаштувань Firefox. Там цих налаштувань ... кілька сотень, напевно. Нам, в даному випадку, природно, потрібна лише одна:

javascript.enabled

Як її відшукати там?

Це властивість можна ввести (вставити через буфер обміну, натиснувши на клавіатурі Ctrl + C) в рядок пошуку - і тоді браузер сам знайде все рядки в налаштуваннях, що містять його.

Бачимо, що встановлено значення цієї властивості, рівне true (тобто javascript може працювати).

Клацаємо двічі мишею по значенню true, після чого воно зміниться на false і стане виділеним. Крім того, зліва з'явиться напис, що воно «встановлено користувачем»). Напис теж буде виділеної, тобто жирним шрифтом.

Після цього, всі знову завантажуються сторінки не будуть виконувати міститься в них javascript. Однак, підкреслимо, що - лише ЗНОВУ завантажуються. Тоді як з вже завантажених сторінок браузера він нікуди не дінеться.

Наприклад, Rambler-пошта працюватиме, як ні в чому не бувало, так само як і інші сайти.

А ось якщо спробувати завантажити знову сторінку з Rambler-поштою, то вона повідомить: у Вашому браузері відключений javascript, без нього робота пошти - неможлива. Доведеться знову підключити javascript, тільки після цього можна буде зайти в пошту. Схожі способи відключення JS для інших браузерів описані тут .

Треба сказати, що цей спосіб - найпростіший, але він незручний, однако. Доведеться кожного разу звертатися на сторінку about: config і то включати, то відключати javascript. До того ж, якщо він буде відключений, то сторінка буде формуватися без урахування його технологій (тобто верстка може бути збита, а в деяких випадках - і сама сторінка не буде завантажена). Відкриття ж сторінки сайту в текстовому варіанті, найчастіше, виглядає непривабливо і незручно.

До речі, чому? Тому, що в даний час досить багато розробників не бажають «зв'язуватися» з CSS, вважаючи за краще універсальний javscript. Ще точніше: на ньому написано величезну кількість самих різних бібліотек, фреймворків. Дуже багато «розробники», не бажаючи «витрачати час» на ручну оптимізацію (шаблонів) сторінок, використовують ці фреймворки. Так, іноді страждає якість оформлення, сторінки бувають якимись убогими, смутними, незручними ... але, хіба кому є до цього справа? Зате - як-то там працює, щось там видно на сторінці і, головне, зроблено швидко. Ну, і - щось там "ефектне" (на думку тих, хто давав завдання розробникам) з'являється, з'являється і крутиться.

А деякі сайти (як уже згадувана Rambler-пошта) попросту будуть непрацездатні.

2. Тимчасове відключення javascript за допомогою плагінів

Це дає можливість відключити javascript - за вибором - тільки на тих сторінках, які до того змушують (тобто вибірково, за бажанням користувача).

Для цієї мети служать плагіни, такі, як JS Switch, Noscript. За моїми оцінками, кращим з них є, начебто, JS Switch. Так, він дозволяє тимчасово відключити javascript на сторінці сайту, а потім, коли він реально знадобиться - знову включити його. Що ж, зручно. Тобто є можливість зберегти саме той формат вебсторінки, який сформувався, в тому числі і за допомогою javascript. Тобто можна скористатися лише його перевагами, а потім спокійно відключити.

Правда, на жаль, він відключає тільки ті JS-скрипти, які прописані в самому тексті сторінки. Тоді як підкачуємі скрипти, за допомогою рядків виду

<Script src = "http://site.ru/script_file.js" type = "text / javascript"> </ script>

- чомусь не відключаються, все одно працюють. Тобто функціональність даного плагіна виявляється якийсь половинчастою.

До речі, цей плагін має навіть якісь настройки, які дозволяють аналізувати роботу JS. Правда, на мій погляд, FireBug - все ж зручніше і функуціональнее.

3. Відключення javascript за допомогою букмарклета

Це - простий спосіб відключення JS. І, до речі, безпечний: не доведеться вбудовувати в браузер НЕ ВАМИ розроблених плагінів, які можуть працювати по "дивним" принципам і алгоритмам.

Що таке букмарклет?

Це (англ. Bookmarklet; bookmark - «закладка» і applet - «аплет») - невелика JavaScript-програма, оформлена як javascript: URL і зберігається як браузерна закладка .

Зазвичай закладка служить для того, щоб, клікнувши по ній, відкрити відповідну сторінку сайту. Тоді як букмарклет - це особлива закладка: замість переходу за вказаною в ній посиланням вона виконує записаний в ній javascript-код.

Так, воістину, javascript javascript-ом вибивають відключають.

Для цієї мети в Букмарклет, замість URL, фігурує функція і так званий псевдопротокол javascript:. Втім, ніж міркувати про це, давайте відразу подивимося на робочий приклад букмарклета:

javascript :( function () {var% 20html = document. getElementsByTagName ( 'html') [0]. outerHTML; html = html. replace (/ <script ([\ s \ S] *?) <\ / script> / g, ""); document. write (html); document. close ();}) ();

Розглянемо ключові особливості цього букмарклета:
  1. Бачимо, що спочатку йде псевдопротокол javascript. Він допускається в посиланнях (теги а мови html); при цьому, замість відкриття посилання, цей протокол починає виконувати код, вказаний в дужках.
  2. У дужках ж ми бачимо безіменну функцію. Зверніть увагу на дужки (), що стоять в кінці букмарклета (перед останньою крапкою з комою;. Ці дужки означають, що дана безіменна функція не тільки оголошена, але і відразу почне виконуватися, як тільки буде «активований» букмарклет.
  3. Букмарклет повинен бути написаний в один рядок. Так, таке правило. Інакше не запрацює. Тому краще спочатку його протестувати, як звичайний JS-скрипт, а вже потім оформити в необхідному вигляді, прибравши переклади рядків і, по можливості, прогалини (див. Нижче).
  4. Пропуск замінений символами% 20. Це - пробіл, закодований за допомогою URL Percent Encoding. Справа в тому, що в адресі (URL) заборонений ряд символів, до яких відноситься і пробіл. Тому замість пробілу слід писати вказаний код. А взагалі, по можливості, слід створювати код букмарклета без пробілів. Це, звичайно, можливо не завжди, наприклад, при використанні ключового слова var (адже інакше це слово просто зіллється з ініціалізіруемих їм змінної, що дасть помилку).

З урахуванням зазначених особливостей, цілком можна написати код букмарклета вручну: адже в усьому іншому - це звичайний javascript-код, не більше того. Однак, можна також скористатися відповідним сервісом .

Однак, можна також скористатися відповідним   сервісом

Для прикладу, сервіс пропонує найпростіший букмарклет, при натисканні на «Click Me» виводить повідомлення у вигляді поточної дати, щось на зразок: «The time is: Wed Mar 08 2017 11:40:25 GMT + 0300».

Стерши рядок «alert ( 'The time is:' + Date ());», можна вставити замість відповідний код javascript (при цьому код буде приведений до потрібного вигляді, все прогалини перетворюються в символи% 20 і т.д. Щоб протестувати вийшов букмарклет, слід його оновити, тобто натиснути на кнопку «Update» (інакше даний сервіс буде виконувати раніше зроблений букмарклет!).

Після того, як букмарклет заробив так, як треба, треба клікнути по ньому мишею і, не відпускаючи кнопку, перевести її покажчик на вкладку браузера «Закладки»,

Після того, як букмарклет заробив так, як треба, треба клікнути по ньому мишею і, не відпускаючи кнопку, перевести її покажчик на вкладку браузера «Закладки»,

там перевести покажчик в потрібну позицію (де б Ви хотіли, щоб з'явилася закладка) і тільки після цього - відпустити кнопку миші. В даному прикладі, наш букмерклет з'явиться між вкладками «Mozillа Firefox» і «document.write»:


write»:

До речі, якщо треба буде внести виправлення - наприклад, поміняти назву букмарклета або його код, то це легко зробити. Спочатку лівої кнопкою миші клацаємо на «Закладки», потім підводимо її покажчик до закладці «Click me». після чого правою кнопкою миші клацаємо на ньому:


після чого правою кнопкою миші клацаємо на ньому:

Клікнувши лівої кнопкою миші на вкладці «Властивості», потрапляємо сюди:


Клікнувши лівої кнопкою миші на вкладці «Властивості», потрапляємо сюди:

Тут можна змінити Ім'я, а також Адреса посилання. сформованої як букмарклет. Як бачимо, в рядку «Адреса» якраз і міститься його код. Правда, на жаль, в одну строчку, та ще без пробілів ... проте, якщо треба щось поміняти по-швидкому (пару символів), можна скористатися таким способом (хоча, по суті, простіше стерти всі символи в рядку «Адреса» і вставити туди необхідний код букмарклета).

Все, букмарклет - готовий. Тепер, зайшовши в «Закладки», натиснувши на рядок, де він знаходиться (тобто Click me - в даному випадку), Ви можете запустити його. А він, у свою чергу, виконає той JS-код, який в ньому міститься.


Розберемо роботу букмарклета з видалення javascript зі сторінок сайту

В общем-то, він влаштований дуже просто. Але все ж.

Спочатку за допомогою функції getElementsByTagName в змінну html записується посилання на перший (індекс «0» в квадратних дужках) тег з ім'ям "html".

Відзначимо, що в коді будь-якій сторінці (якщо там немає фреймів, звичайно) може перебувати тільки один тег html. Однак, функція getElementsByTagName створює, в будь-якому випадку, колекцію з елементів, що мають відповідне ім'я, навіть якщо такий елемент всього один.

Властивість outerHTML дає зовнішній html-код елемента (тобто html-код, включаючи теги самого цього елемента). Звернемо увагу: це - НЕ ВИХІДНИЙ код сторінки, а її код з урахуванням об'єктної моделі документа, тобто з урахуванням DOM .

Це-то нам і потрібно: адже в вихідному коді сторінки не містяться ті зміни її зовнішнього вигляду і контенту, які могли бути здійснені спрацювали javascript-ом. А без цього, як уже говорилося, сторінка сайту може бути нечитаною, може збитися верстка.

Далі ми, за допомогою регулярного виразу, вирізаємо з коду html все теги виду <script ...> ... </ script>. Тобто вирізаємо JS-теги. Відзначимо, що неважливо, яку вони несуть функцію: чи то виконують на сторінці будь-яку дію, то чи лише підключають до цієї сторінки будь-якої JS-код, що знаходиться в іншому файлі.

Таким чином, після закінчення роботи цієї команди в html-коді сторінки (сформованому з урахуванням роботи javascript), тегів зазначеного виду не залишиться (навіть якщо вони і розташовані в умовних коментарях - це не має значення). Тим самим, сторінці майже НІЧОГО буде запускати, незалежно від планів тих, хто її розробив. Відповідно, майже всі її інтерактивність (і потрібна, і непотрібна) буде ліквідована.

Слово «майже» вжито в тому сенсі, що залишаться, можливо, ще CSS-анімації, наприклад. Залишаться можливості розкриваються меню, виконаних на чистій html + CSS і т.п. Адже наша функція видаляє тільки javascript, тоді як інші теги, не кажучи вже про властивості CSS, не чіпає.

Далі - використовуємо метод document.write ().

Найцікавіше, іноді навіть на горезвісному «Хабрахабр» люди вдають, що всерйоз обговорюють питання - а чи потрібен, мовляв, цей метод або, типу того, краще без нього обійтися. Навіщо такі обговорення? ... Невже людям (деяким хабрахабровцам, наприклад) настільки вже робити нічого, що стали прикидатися? ... Або вже мало хто може працювати з javascript без бібліотек? Ну, втім, зрозуміло, що базіки - вони всюди базіки, навіть якщо вони і взяли участь (беруть участь) в розробці будь-якого програмного продукту.

Цей метод донезмоги краще підходить в даному випадку:

  1. Це самий, мабуть, швидкий серед методів, які можуть дати аналогічний результат.
  2. Це метод, якщо викликаний вже ПІСЛЯ завантаження сторінки, ПОВНІСТЮ стирає її вміст, натомість виводячи то, що задано у нього в аргументі (в даному випадку - вміст змінної html. Відповідно, структура DOM буде будуватися заново, відповідно до її значенням. А, як ми вже з'ясували, теги-то <script ...> ... </ script> в ній відсутні.

До речі, після того, як додавати на сторінку буде вже нічого не потрібно, слід закрити запис, тобто здійснити телефонний дзвінок

document.close ()

Справа в тому, що в протилежному випадку в деяких браузерах (в тому ж Firefox) висновок на сторінку буде вважатися незакінченим і індикатор завантаження сторінки буде досить тривалий час обертатися, дезінформуючи користувача.

До речі, іноді така можливість є корисною, якщо потрібно додатково щось вивести на сторінку за допомогою методу document.write (). Справді, поки відкрите висновок, можна скільки завгодно раз застосовувати зазначену команду - при цьому нова інформація буде додаватися до сторінці, вміст її мінятися не буде. Тоді як після закриття потоку виведення - застосування виклику document.write () (точніше, після завершення завантаження сторінки) може привести до перезапису вмісту сторінки. Відсутність же виклику document.close () по суті, змушує браузер не закінчується завантаження сторінки.

І, загаль-то, все. Після виконання даного букмарклета у нас виходить, по суті, та ж сама, але ІНША сторінка з вирізаним JS. Навіть якщо сервер (шляхом застосування технології websockets, наприклад) спробує передати їй якісь дані - їх просто нікому буде обробляти. Правда, сервер може здійснити запис на сторінку, тобто він здатний спочатку занурити новий javascript, та ще з використанням оператора eval (). Як би не лаяли його, в даному випадку він може бути виходом з положення - для сервера: скрипт підвантажиться на сторінку і почне виконуватися (в свою чергу, заново довантажити на неї тільки що віддалені скрипти). Тому для користувача буде доцільніше продовжити перегляд сторінки сайту в автономному режимі. У браузері Firefox він включається так: Файл, Працювати автономно.

У браузері Firefox він включається так: Файл, Працювати автономно

До речі, іноді така можливість є корисною, якщо потрібно додатково щось вивести на сторінку за допомогою методу document.write (). Справді, поки відкрите висновок, можна скільки завгодно раз застосовувати зазначену команду - при цьому нова інформація буде додаватися до сторінці, вміст її мінятися не буде. Тоді як після закриття потоку виведення - застосування виклику document.write () (точніше, після завершення завантаження сторінки) може привести до перезапису вмісту сторінки. Відсутність же виклику document.close () по суті, змушує браузер не закінчується завантаження сторінки.

При цьому зв'язок сторінки з сервером буде розірвана. І вже не буде можливості довантажити на неї непотрібні користувачеві (відвідувачеві веб сторінці) JS-скрипти.

Недолік способу полягає в тому, що після видалення скриптів і спрацьовування методу document.write () сторінка може ледь помітно «моргнути». Справа в тому, що, незважаючи на високу (мабуть, САМУ високу - з того, на що здатний сучасний javascript, в порівнянні з іншими його методами) швидкість роботи даного методу, а також незважаючи на те, що контент (наприклад, малюнки) може кешуватися браузером, все ж, не буде працювати отрісовиваться заново. Якщо вона є досить об'ємною, для відтворення потрібно помітне час, що для користувача може стати надто помітним. Однак, на практиці, для переважної більшості сайтів, даний букмарклет працює, можна сказати, миттєво.

Крім того, якщо Ви застосуєте цей спосіб при перегляді сторінки не з початку, а де-небудь в середині, природно, вона перекрутити на початок. Адже сторінка-то буде переписана НАНОВО. Звичайно, можна, перед видаленням всього сміття зі сторінки (у вигляді JS), зберегти її поточний стан, потім дописати на неї СВІЙ javascript, який потім буде виконаний після її перезапису. Він прокрутить сторінку саме до того стану, в якому вона була до виклику букмарклета.

Обмеження останнього способу

  1. Треба сказати, що якщо на сторінці є кілька фреймів і, відповідно, кілька тегів html, то букмарклет спрацює тільки на першому фреймі - за списком у відповідній колекції. Для обходу всіх фреймів доцільно використовувати, наприклад, цикл.

  2. Якщо скрипти видалені з сторінки, відновити їх буде, по всій видимості, неможливо (хоча, в принципі, можна написати скрипт, який зберігає видалені з сторінки скрипти, наприклад, в локальному сховищі і потім, за бажанням користувача, вставляють їх назад). Якщо необхідна буде повнофункціональна сторінка (тобто з самого початку наявними на ній скриптами), то доведеться завантажити її знову (завантажити, а не просто оновити). Відзначимо, що оновлення, швидше за все, дасть ту ж саму сторінку - тобто без javascript-ів. Для завантажити цю сторінку необхідно встановити курсор в адресний рядок браузера (в кінці URL) і натиснути клавішу Enter. І, природно, відключити режим автономного перегляду, якщо він був включений.

Виникає питання: як це зробити?
До речі, чому?
Але, хіба кому є до цього справа?
Що таке букмарклет?
S \ S] *?
Навіщо такі обговорення?
Невже людям (деяким хабрахабровцам, наприклад) настільки вже робити нічого, що стали прикидатися?
Або вже мало хто може працювати з javascript без бібліотек?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью