Как в просмотре кода выделенного фрагмента реализована подсветка?
Встроенный поиск F3 находит требуемое (в исходнике страницы), только если это plain text, без тегов. А "Исходный код выделенного фрагмента" умеет подсветить и текст, в котором теги были.
Отредактировано Ferguss114 (23-10-2013 20:14:10)
Отсутствует
Почему этот код
if (document.location.hostname="my_host"){ function remove() { links=document.getElementsByTagName('a'); for(var i=0; i<links.length; i++) links[i].removeAttribute('href') } remove() }
вызывает перезагрузку страницы?
Отсутствует
Может кто-нибудь попробует помочь?
Отсутствует
Почему здесь обработчик onclick срабатывает только один раз?
Отредактировано Ferguss114 (19-11-2013 13:59:32)
Отсутствует
Ferguss114
Потому что hasAttribute() проверяет наличие атрибута (и вызывается, кстати, неправильно).
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Я переделал hasAttribute() на getAttribute() и всё заработало.
Ещё пара вопросов: почему если в условии стоит else или else if то всё нормально, а если два независимых условия с if — то не работает?
так работает
<htlm> <body> <div style="background-color:skyblue" id="mydiv1" onclick="changeColor()">DIV1 ---- кликнуть сюда для изменения цвета DIV2----</div> <br> <div style="background-color:red" id="mydiv2">DIV2</div> <script> function changeColor() { div = document.getElementById('mydiv2'); if (div.getAttribute('style') == 'background-color:red') { div.setAttribute('style', 'background-color:yellow') } else { // <<<<<<<<<<<<<< div.setAttribute('style', 'background-color:red') // <<<<<<<<<<<<<< } } </script> </body> </htlm>
<htlm> <body> <div style="background-color:skyblue" id="mydiv1" onclick="changeColor()">DIV1 ---- кликнуть сюда для изменения цвета DIV2----</div> <br> <div style="background-color:red" id="mydiv2">DIV2</div> <script> function changeColor() { div = document.getElementById('mydiv2'); if (div.getAttribute('style') == 'background-color:red') { div.setAttribute('style', 'background-color:yellow') } if (div.getAttribute('style') != 'background-color:red') { // <<<<<<<<<<<<<< div.setAttribute('style', 'background-color:red') // <<<<<<<<<<<<<< } } </script> </body> </htlm>
Отредактировано Ferguss114 (19-11-2013 17:17:12)
Отсутствует
а так нет
Ну и что должно происходить, когда style='background-color:red' ?
getAttribute() возвращает текущее значение атрибута.
И последнее: если я хочу передать event в качестве аргумента, когда нужно писать полностью event, а когда достаточно е?
node.onclick = function(anything) { ... }; node.addEventListener("click", function(anything) { ... }, false); node.setAttribute("onclick", "doSomething(event);");
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Ferguss114
Вариант:
(div.getAttribute('style') == 'background-color:red') ? div.setAttribute('style', 'background-color:yellow') : div.setAttribute('style', 'background-color:red');
Отсутствует
Infocatcher, bunda1
Спасибо
Отсутствует
Понравился скрипт Lights out any page for Greasemonkey, но вся его ценность для меня пропадает, из-за того что для его работы требуется разрешить Java Script. В связи с этим вопрос, можно ли как-то подправить данный скрипт, чтобы он работал и при запрещённых Java Script?
Отредактировано voqabuhe (12-12-2013 16:21:16)
Отсутствует
Как сделать чтобы результат не был 0?
http://learn.javascript.ru/play/nBA8Sb
Отредактировано hartumov (02-01-2014 19:53:51)
Отсутствует
Как сделать чтобы результат не был 0?
Считывать данные из полей для ввода перед вычислением, а не при загрузке страницы.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Считывать данные из полей для ввода перед вычислением, а не при загрузке страницы.
То есть присваивать данные из полей в переменные внутри функции getRes?
А если эти данные из полей ввода должны использоваться ещё и в другой функции? Как сделать чтоб она их увидела?
Объявлять x и y без var, чтобы они стали глобальными переменными и тогда будут доступны в любом месте скрипта?
Отсутствует
hartumov
Вот так, например: http://learn.javascript.ru/play/oxSYP
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Как сделать EventListener на загрузку этого окошка, чтобы по окончании загрузки в инпут вставился мой текст?
w=open('','', 'width=370,height=120'); w.document.body.innerHTML="<center><p><input type='text size='10'></p></center>"
Отредактировано hartumov (03-01-2014 17:21:45)
Отсутствует
Ну это я для наглядности взял окошко, где кроме инпута больше ничего нет.
А вот пример из поста Infocatcher http://learn.javascript.ru/play/oxSYP — если я хочу открыть его со вставленными из буфера числами, как быть? Ведь не реально в data впихнуть код целой страницы.
Или открыть локальный хтмл файл в виде всплывающего окошка и тоже вставить в поля содержимое буфера, т.е. опять же надо дождаться окончания загрузки страницы.
А EventListener на загрузку всплывающего окна — это очень сложно?
Отсутствует
если я хочу открыть его со вставленными из буфера числами, как быть?
Откуда открыть? У обычных страниц бедет доступ только к страницам с того же домена.
А так-то это просто:
var w=open(location.href, '', 'width=370,height=120'); w.addEventListener("load", function setup() { w.removeEventListener("load", setup, false); w.document.body.innerHTML="<center><p><input type='text size='10' value='1'></p></center>"; }, false);
Добавлено 03-01-2014 21:19:38
Ну, и блокировщик всплывающих окон придется временно отключить.
Или нужно делать кнопку, чтобы окно открывалось после клика.
Отредактировано Infocatcher (03-01-2014 21:19:38)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Я сохранил страничку с вашим "счётчиком" http://learn.javascript.ru/play/oxSYP
Теперь подставляю в код адрес локального файла
var w=open('file:///C:/Calc.html', '', 'width=370,height=120'); w.addEventListener("load", function setup() { w.removeEventListener("load", setup, false); w.content.document.getElementsByTagName('input')[0].value='TEST'; }, false);
Текстовые поля я сделал пустыми. Теперь пытаюсь получить первый инпут и вставить в него строку 'TEST'. В идеале я хотел вставлять содержимое буфера, но пока хоть так.
Вот для этого мне и нужен был Listener. Но получить инпут (а хоть и любой элемент) внутри функции я не могу.
Код я запускал из Keyconfig, если это важно.
А с таймаутом да, работает, я ещё вчера пробовал. Вне этой функции - open() - можно свободно получить любой элемент. А изнутри - не выходит.
Но тогда этот EventListener не нужен, просто открываю окно, таймер через полторы секунды вставляет текст. Я думал с обработчиком лучше.
Или с обработчиком никак не выйдет?
Отсутствует
Код я запускал из Keyconfig, если это важно.
Да, важно, там совсем другое окно и совсем другая функция open(), которая возвращает ссылку на окно браузера, внутри которого уже находится окно со страницей (которая еще не загрузилась на момент загрузки окна браузера).
Можно сделать вот так:
var w = window.openDialog( "chrome://browser/content/", "_blank", "chrome,dialog=no,width=370,height=120", "file:///F:/test.html" ); w.addEventListener("load", function setup(e) { w.removeEventListener(e.type, setup, false); //w.content.document.getElementsByTagName('input')[0].value='TEST'; var browser = w.gBrowser.selectedBrowser; browser.addEventListener("load", function setupContent(e) { browser.removeEventListener("load", setupContent, true); //w.content.document.getElementsByTagName('input')[0].value='TEST'; browser.contentDocument.getElementsByTagName('input')[0].value='TEST'; }, true); }, false);
Но зачем это нужно?
Добавлено 04-01-2014 01:11:28
В идеале я хотел вставлять содержимое буфера, но пока хоть так.
Казалось бы, что это все делает в теме про Greasemonkey.
Greasemonkey, кстати, вроде бы, только GM_setClipboard() умеет.
Но из расширений никаких ограничений нет, а в контексте главного окна браузера вообще доступна готовая функция readFromClipboard() из chrome://browser/content/browser.js.
Отредактировано Infocatcher (04-01-2014 01:11:28)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
hartumov
в твоём случае можно сделать проще...
Я б не сказал, что этот вариант для меня проще. Я толком и не разобрался что там к чему
А вот вариант Infocatcher-а это как раз то что я и хотел. Работает как часы!
У меня возник еще вопрос по экранированию кавычек. Почему здесь обработчик онклик перестает работать если я экранирую двойные кавычки? http://learn.javascript.ru/play/LeSTEb
Именно здесь это не нужно, здесь используются разные их виды, но я хочу понять в чем причина.
Отсутствует
У меня возник еще вопрос по экранированию кавычек. Почему здесь обработчик онклик перестает работать если я экранирую двойные кавычки? http://learn.javascript.ru/play/LeSTEb
Именно здесь это не нужно, здесь используются разные их виды, но я хочу понять в чем причина.
В значениях атрибутов экранирование не работает, там можно только " или '/' написать.
А экранировать надо при вот таком использовании:
document.getElementsByTagName("input")[0] .setAttribute( "onclick", "document.getElementsByTagName(\"textarea\")[0].value=\"test test test\"" );
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует