букмарклет: вставка текста в текстовое поле с помощью js? - PullRequest
4 голосов
/ 01 октября 2010

Эй, ребята, интересно что я делаю не так?

javascript:document.getElementsByTagName('textarea').innerHTML='inserted';

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

привет матовый

Ответы [ 4 ]

6 голосов
/ 01 октября 2010

Используйте свойство value вместо innerHTML и убедитесь, что ваш код оценивается как undefined, что можно сделать, заключив его в функцию без оператора return.Если вы этого не сделаете, содержимое страницы будет заменено тем, что оценивает ваш код (в данном случае строка «вставлена»).

javascript:(function() {document.getElementsByTagName('textarea')[0].value = 'inserted';})();

Обновление 14 января 2012 г.

Мне не удалось обнаружить тот факт, что исходный код рассматривал document.getElementsByTagName('textarea') как отдельный элемент, а не NodeList, поэтому я обновил свой код с помощью [0].Ответ @ streetpc объясняет это более подробно.

3 голосов
/ 10 января 2011

Unlinke getElementById, getElementsByTagName имеет s в Elements, поскольку возвращает массив в виде массива NodeList соответствующих элементов. Итак, сначала вам нужно получить доступ к одному из элементов, скажем, к первому для простоты:

javascript:void((function(){document.getElementsByTagName('textarea')[0].value='inserted'})())

Кроме того, как уже упоминалось, свойство value вместо innerHTML здесь.

1 голос
/ 30 июня 2014

Если кому-то интересно, как использовать текущее текстовое поле, используйте следующее:

document.activeElement.value = "...";
0 голосов
/ 01 октября 2010

В jQuery вы должны использовать, если так:

для одного элемента -> $ ('# element_id'). Html ('ваш html здесь')
для всех текстовых областей -> $('textarea'). val ('ваш html здесь')

Я должен признаться, что я не уверен, почему это работает таким образом, но это работает.И используйте rameworks, они сэкономят ваше время и нервы.

...