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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

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

unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
только вот по другим путям их нет

Всего записей: 6678 | Зарегистр. 14-02-2005 | Отправлено: 07:54 17-08-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не знаю, куда написать - напишу сюда.  
 
Пару недель назад перестал работать userJS скрипт для добавки в адресную строку для ЖЖ строчки style=mine. Причем во всех браузерах - в Опере Престо, и в chrome, где он был поставлен через Tampermonkey.
 
Видимо ЖЖ что-то изменил, но как - непонятно. Раньше при попадании на страницу xxxx.livejournal.com/yyyy.html  к адресу дописывалось ?style=mine - теперь резко перестало.
 
В чем может быть причина, как поправить?  

Код:
// ==UserScript==
// @name style=mine LJ comments
// @include http://*.livejournal.com/*
// @exclude http://pics.livejournal.com/*
// @exclude http://www.livejournal.com/*
// ==/UserScript==
 
(function() {
    
var style_mine="style=mine";
 
function style_add(s) { return (s?s+'&':'?')+style_mine; };
 
for ( var i = 0; i < document.links.length; i++ )  
{
var links_arr = document.links[i];
if (links_arr.hostname.match(/\.livejournal\.com$/i) && links_arr.pathname.indexOf('.bml') == -1 && links_arr.search.indexOf('style=') == -1)  
{links_arr.run = style_add(links_arr.run); }
}
if (location.href.match(/livejournal.com/) && location.href.indexOf('.bml') == -1 && location.href.indexOf('style=') == -1 )
{
window.stop();
before_thread=location.href.indexOf("#");
if (before_thread<0) before_thread=location.href.length;
after_thread=location.href.substring(0, before_thread);
complete_thread=location.href.substring(before_thread, location.href.length);
reg_exp=new RegExp("\\?"+style_mine+"$|"+style_mine+"&|&"+style_mine, "gi");
link_left=after_thread.replace(reg_exp, "");
if (link_left==after_thread) {paste_place=link_left.indexOf("?");
if (paste_place<0) {link_left+="?"+style_mine;}
else
{if (paste_place==link_left.length-1) {link_left+=style_mine;}
else {link_left+="&"+style_mine;};};};
location.href=link_left+complete_thread;
}  
}
)();  

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 08:35 10-09-2017 | Исправлено: xerpal, 08:39 10-09-2017
Mavrikii

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

Цитата:
Не знаю, куда написать - напишу сюда

можно, наверно, и в тему по эддонам для браузера  )
 

Цитата:
Видимо ЖЖ что-то изменил

очевидно ) но скорее всего проблема в вашем скрипте, ибо он работает (проверил в хроме).
вот только в конце каждой строки есть лишние символы.
 
ps: хотя сработало только раз.
 
pps:
Цитата:
@include http://*.livejournal.com/*  

страницы то в https открываются? ну так и указывайте это

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 09:30 10-09-2017 | Исправлено: Mavrikii, 09:37 10-09-2017
xerpal



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

Цитата:
страницы то в https открываются? ну так и указывайте это

Точно! Гениально Вот что изменилось!!  
 
В шапку добавил https, в итоге  

Код:
// @name style=mine LJ comments
// @include http://*.livejournal.com/*
// @include https://*.livejournal.com/*
// @exclude http://pics.livejournal.com/*
// @exclude http://www.livejournal.com/*
// @exclude https://pics.livejournal.com/*
// @exclude https://www.livejournal.com/*  

 
В Хроме решило проблему.  
Но редирект по https в Престо так и не пашет ((, видимо какие то заморочки при редиректе, http по прежнему редиректит, https по прежнему нет.  
Но видимо это уже не сюда задавать.

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 13:37 10-09-2017 | Исправлено: xerpal, 11:02 11-09-2017
Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу извинить, если не в тему.
Вопрос по angularJS.
Есть такой кусок html  
 
<div class="gdcont" ng-repeat="item in arra">
</div>
 
Как сделать так, чтобы если в arra нечетное количество элементов то у div ширина 100% а если четное, то ширина 50%?
 
С ng-if не получается.

Всего записей: 323 | Зарегистр. 18-10-2005 | Отправлено: 18:43 11-09-2017 | Исправлено: Aladdinych, 18:46 11-09-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aladdinych
не проще сделать через css ?)  
 

Цитата:
С ng-if не получается

https://docs.angularjs.org/api/ng/directive/ngClassOdd

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 20:47 11-09-2017
ToBad



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Для вывода reCaptcha используется api key который привязывается к доменному имени. Пример указанный ниже будет отображать: "ОШИБКА: неверный домен ключа", однако RuCaptchaBot от всем известного сайта успешно выводит чужую капчу для разгадывания. Подскажите пожалуйста, как это происходит технически и что нужно чтобы отобразить капчу с другого домена у себя на страничке, либо у себя в броузере через userscript без загрузки оригинального сайта?

Код:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Добавляем reCAPTCHA от Google на сайт</title>
</head>
<body>
    <form method="post">
        <label for="name">Имя:</label>
        <input name="name" required><br />
        <label for="email">E-mail:</label>
        <input name="email" type="email" required><br />
        <div class="g-recaptcha" data-sitekey="6LeKaREUAAAAALB6Sgjp5XqHq0Kb_aLEn_KORz6u"></div>
        <input type="submit" value="Отправить" />
    </form>
    <script src='https://www.google.com/recaptcha/api.js'></script>    
</body>
</html>

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 19:58 28-10-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ToBad
При имитации запроса браузером можно подделать поле referer, что нельзя сделать с помощью js
Та программа, фактически, показывает капчу как браузер при посещении сайта.

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 20:08 28-10-2017
ToBad



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо за ответ! То есть эта программа фактически открывает страничку, а далее видимо до загрузки контента удаляет всё содержимое и вставляет код типа того, что показал я?
В принципе я юзерскриптом делал тоже самое, но у меня страничка успевает мелькнуть... Думал может есть способ сделать это более элегантно.
Кстати если на локальном сервере расположить вышеуказанный код, а в hosts сопоставить нужный домен с 127.0.0.1 - каптча грузится, значит гуглокод не так уж серьёзно проверяет?
А можно подделать referer если этот код выводить из пхп?

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 01:46 01-11-2017
Mavrikii

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

Цитата:
 а далее видимо до загрузки контента удаляет всё содержимое и вставляет код типа того, что показал я?  

зачем? вы же когда браузером заходите, то он также делает отдельный запрос за капчей. в этом запросе есть реферер, только по нему можно определить сайт с которого пришло (ну и сравнить с публичных ключом выданным этому сайту).  
капча открывается в iframe, то есть, по сути, отдельная страница, поэтому ничего удалять не нужно вообще
 

Цитата:
а в hosts сопоставить нужный домен с 127.0.0.1 - каптча грузится, значит гуглокод не так уж серьёзно проверяет

я же сказал вам насчет поля referer в http запросе. оно не привязано к IP, оно привязано к тому, что написано в адресной строке браузера.
 

Цитата:
А можно подделать referer если этот код выводить из пхп?

если средство позволяет имитировать http запрос, то в нем можно подделать любую информацию.
 
 
ps: чтобы было понятно как рекапча реализована
https://developers.google.com/recaptcha/old/docs/php
 

Код:
echo recaptcha_get_html($publickey);

генерит html код для рекапчи с публичным ключом сайта (фактически это iframe с содержимым с сайта рекапчи)
 
пользователь делает, что нужно, отправляет форму сайту с формой, а он

Код:
  $privatekey = "your_private_key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);
 
  if (!$resp->is_valid) {

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

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 02:11 01-11-2017 | Исправлено: Mavrikii, 02:52 01-11-2017
ToBad



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть элемент с текстом "2020" и рядом крестик для удаления, причём удаляет по нажатию и левой и правой кнопки мыши. Вот код:

Код:
<span><div class="o_Pill_Pill_filterPill o_Pill_Pill_pill o_Pill_Pill_override o_Pill_Pill_button"><button class="o_button_theme_button o_Button_Button_button o_Button_Button_buttonBase o_Button_Button_buttonFlat o_Button_Button_buttonNeutral o_Button_Button_buttonAccent o_Button_Button_buttonPrimary o_Button_Button_buttonFloating o_Pill_Pill_button o_button_theme_flat o_button_theme_button o_button_theme_squared o_Button_Button_flat o_button_theme_neutral o_Button_Button_neutral" type="button" data-react-toolbox="button"><span class="o_Pill_Pill_filterText">2020</span></button><button class="o_button_theme_toggle o_button_theme_button o_IconButton_IconButton_toggle o_IconButton_IconButton_buttonAccent o_IconButton_IconButton_buttonPrimary o_Pill_Pill_toggle o_button_theme_neutral o_IconButton_IconButton_neutral" type="button" data-react-toolbox="button"><span class="o_Icon_Icon_icon o_Pill_Pill_icon" data-icon="close"></span></button></div></span>

Через консоль нахожу именно этот элемент среди прочих, однако никак не могу имитировать клик . Делаю так:

Код:
var but=document.getElementsByClassName('o_Pill_Pill_filterPill o_Pill_Pill_pill o_Pill_Pill_override o_Pill_Pill_button')[0].getElementsByClassName('o_button_theme_toggle o_button_theme_button o_IconButton_IconButton_toggle o_IconButton_IconButton_buttonAccent o_IconButton_IconButton_buttonPrimary o_Pill_Pill_toggle o_button_theme_neutral o_IconButton_IconButton_neutral')[0];
but.click();
 

Код просто не срабатывает... Вернее нужное действие (удаление элемента) не происходит...
Через консоль but =
Код:
<button class="o_button_theme_toggle o_button_theme_button o_IconButton_IconButton_toggle o_IconButton_IconButton_buttonAccent o_IconButton_IconButton_buttonPrimary o_Pill_Pill_toggle o_button_theme_neutral o_IconButton_IconButton_neutral" type="button" data-react-toolbox="button"><span class="o_Icon_Icon_icon o_Pill_Pill_icon" data-icon="close"></span></button>

А but.toString() = [object HTMLButtonElement]
Помогите пожалуйста сделать это правильно...

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 17:28 07-11-2017 | Исправлено: ToBad, 17:30 07-11-2017
Mavrikii

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

Цитата:
причём удаляет по нажатию и левой и правой кнопки мыши.

значит не на клике сидит, а на mousedown или mouseup
элементарно смотрится в панели разработчика в браузере

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 21:39 07-11-2017
ToBad



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

Цитата:
значит не на клике сидит, а на mousedown или mouseup  

 
Mavrikii Спасибо большое за подсказку! Сидело на mouseup...
 

Цитата:
элементарно смотрится в панели разработчика в браузере

 
К сожалению не знаю где именно смотреть. При выделении этой кнопочки в Elements, ниже в окне Properties все события onclick, onmouseup и т.д. стоят как null. В Event Listeners вроде касательно всего, глобально...
Я как Вы понимаете по моим вопросам имею уровень понимания всего этого ниже начального, так что очень благодарен за Вашу помощь!

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 23:19 07-11-2017
Mavrikii

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

Цитата:
В Event Listeners вроде касательно всего, глобально

выделить элемент и будет в отношении его.
если не он, то может быть любой из его родителей до body

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 23:28 07-11-2017
ToBad



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ещё textarea где я пытаюсь поменять текст. Выглядит как поле с текстом, вверху описание "Discription", внизу кол-во набранных символов и сколько всего можно, в данном примере 14/200:

Код:
<span rel="description-text-input"><div data-react-toolbox="input" class="o_input_theme_input o_Input_Input_input o_EditorDescription_EditorDescription_description"><textarea class="o_input_theme_inputElement o_Input_Input_inputElement o_input_theme_filled o_Input_Input_filled" role="input" name="description" type="text" rows="1" style="height: 30px;">test test test</textarea><span class="o_input_theme_bar o_Input_Input_bar"></span><label class="o_input_theme_label o_Input_Input_label"><!-- react-text: 4632 -->Description<!-- /react-text --></label><span class="o_input_theme_counter o_Input_Input_counter"><!-- react-text: 4634 -->14<!-- /react-text --><!-- react-text: 4635 -->/<!-- /react-text --><!-- react-text: 4636 -->200<!-- /react-text --></span></div></span>

Нахожу его и меняю так:

Код:
var txt=$('#content-editor > div > aside > div > div:nth-child(2) > span:nth-child(1) > div > textarea');
txt.value='new'; txt.defaultValue='new'; txt.innerText='new'; txt.innerHTML='new'; txt.textContent='new';

Визуально всё меняется, но не счётчик символов. При физическом клике мышкой - возвращается старый текст. Отправка событий мыши: click, mouseup, mousedown, mouseover - подобного не делает. Отправлял полю focus, blur, change - не помогло, ровно как и имитация нажатия символа (символ не добавляется), события keydown, keyup, keypress - пробовал.  
Что интересно если переписать код подобным образом:

Код:
var txt=$('#content-editor > div > aside > div > div:nth-child(2) > span:nth-child(1) > div > textarea');
setTimeout(function(){txt.value='new'; txt.defaultValue='new'; txt.innerText='new'; txt.innerHTML='new'; txt.textContent='new';},3000);

Это позволит зайти в поле до изменения текста, дождаться изменения, физической мышкой и клавиатурой проверить что вызывает пересчёт символов. Скажу сразу, потеря фокуса ведёт к восстановлению старого текста, нажатия кнопок мыши не помогает, передвижение курсора стрелками с клавиатуры и клавиши типа shift, ctlr - не помогают, только то помогает, что выводит символ и что очень интересно комбинация ctrl-Z. Последняя не делает undo, но счётчик символов срабатывает.
Из всего вышесказанного делаю вывод, что пересчёт символов и смена текста возможно происходят по событию текстового поля onchange, но у меня не получается вызвать его из кода... Что можно попытаться сделать?
 
p.s. Ставлю на текстовом поле точку остановки (subtree modifications) и выкидывает часто на этом коде:

Код:
function(module, exports, __webpack_require__) {
    "use strict";
 
    function forceUpdateIfMounted() {
        this._rootNodeID && ReactDOMTextarea.updateWrapper(this)
    }
 
    function _handleChange(event) {
        var props = this._currentElement.props,
            returnValue = LinkedValueUtils.executeOnChange(props, event);
        return ReactUpdates.asap(forceUpdateIfMounted, this), returnValue
    }
    var _prodInvariant = __webpack_require__( /*! ./reactProdInvariant */ 8),
        _assign = __webpack_require__( /*! object-assign */ 12),
        LinkedValueUtils = __webpack_require__( /*! ./LinkedValueUtils */ 259),
        ReactDOMComponentTree = __webpack_require__( /*! ./ReactDOMComponentTree */ 16),
        ReactUpdates = __webpack_require__( /*! ./ReactUpdates */ 43),
        ReactDOMTextarea = (__webpack_require__( /*! fbjs/lib/invariant */ 2), __webpack_require__( /*! fbjs/lib/warning */ 5), {
            getHostProps: function(inst, props) {
                return null != props.dangerouslySetInnerHTML && _prodInvariant("91"), _assign({}, props, {
                    value: void 0,
                    defaultValue: void 0,
                    children: "" + inst._wrapperState.initialValue,
                    onChange: inst._wrapperState.onChange
                })
            },
            mountWrapper: function(inst, props) {
                var value = LinkedValueUtils.getValue(props),
                    initialValue = value;
                if (null == value) {
                    var defaultValue = props.defaultValue,
                        children = props.children;
                    null != children && (null != defaultValue && _prodInvariant("92"), Array.isArray(children) && (children.length <= 1 || _prodInvariant("93"), children = children[0]), defaultValue = "" + children), null == defaultValue && (defaultValue = ""), initialValue = defaultValue
                }
                inst._wrapperState = {
                    initialValue: "" + initialValue,
                    listeners: null,
                    onChange: _handleChange.bind(inst)
                }
            },
            updateWrapper: function(inst) {
                var props = inst._currentElement.props,
                    node = ReactDOMComponentTree.getNodeFromInstance(inst),
                    value = LinkedValueUtils.getValue(props);
                if (null != value) {
                    var newValue = "" + value;
                    newValue !== node.value && (node.value = newValue), null == props.defaultValue && (node.defaultValue = newValue)
                }
                null != props.defaultValue && (node.defaultValue = props.defaultValue)
            },
            postMountWrapper: function(inst) {
                var node = ReactDOMComponentTree.getNodeFromInstance(inst),
                    textContent = node.textContent;
                textContent === inst._wrapperState.initialValue && (node.value = textContent)
            }
        });
    module.exports = ReactDOMTextarea
}, /*!**************************************************!*\

 
и в конце на этом:

Код:
function(module, exports, __webpack_require__) {
    "use strict";
 
    function getNodeAfter(parentNode, node) {
        return Array.isArray(node) && (node = node[1]), node ? node.nextSibling : parentNode.firstChild
    }
 
    function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {
        DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode)
    }
 
    function moveChild(parentNode, childNode, referenceNode) {
        Array.isArray(childNode) ? moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode) : insertChildAt(parentNode, childNode, referenceNode)
    }
 
    function removeChild(parentNode, childNode) {
        if (Array.isArray(childNode)) {
            var closingComment = childNode[1];
            childNode = childNode[0], removeDelimitedText(parentNode, childNode, closingComment), parentNode.removeChild(closingComment)
        }
        parentNode.removeChild(childNode)
    }
 
    function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {
        for (var node = openingComment;;) {
            var nextNode = node.nextSibling;
            if (insertChildAt(parentNode, node, referenceNode), node === closingComment) break;
            node = nextNode
        }
    }
 
    function removeDelimitedText(parentNode, startNode, closingComment) {
        for (;;) {
            var node = startNode.nextSibling;
            if (node === closingComment) break;
            parentNode.removeChild(node)
        }
    }
 
    function replaceDelimitedText(openingComment, closingComment, stringText) {
        var parentNode = openingComment.parentNode,
            nodeAfterComment = openingComment.nextSibling;
        nodeAfterComment === closingComment ? stringText && insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment) : stringText ? (setTextContent(nodeAfterComment, stringText), removeDelimitedText(parentNode, nodeAfterComment, closingComment)) : removeDelimitedText(parentNode, openingComment, closingComment)
    }
    var DOMLazyTree = __webpack_require__( /*! ./DOMLazyTree */ 101),
        Danger = __webpack_require__( /*! ./Danger */ 1196),
        createMicrosoftUnsafeLocalFunction = (__webpack_require__( /*! ./ReactDOMComponentTree */ 16), __webpack_require__( /*! ./ReactInstrumentation */ 37), __webpack_require__( /*! ./createMicrosoftUnsafeLocalFunction */ 263)),
        setInnerHTML = __webpack_require__( /*! ./setInnerHTML */ 175),
        setTextContent = __webpack_require__( /*! ./setTextContent */ 527),
        insertChildAt = createMicrosoftUnsafeLocalFunction(function(parentNode, childNode, referenceNode) {
            parentNode.insertBefore(childNode, referenceNode)
        }),
        dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup,
        DOMChildrenOperations = {
            dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
            replaceDelimitedText: replaceDelimitedText,
            processUpdates: function(parentNode, updates) {
                for (var k = 0; k < updates.length; k++) {
                    var update = updates[k];
                    switch (update.type) {
                        case "INSERT_MARKUP":
                            insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
                            break;
                        case "MOVE_EXISTING":
                            moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
                            break;
                        case "SET_MARKUP":
                            setInnerHTML(parentNode, update.content);
                            break;
                        case "TEXT_CONTENT":
                            setTextContent(parentNode, update.content);
                            break;
                        case "REMOVE_NODE":
                            removeChild(parentNode, update.fromNode)
                    }
                }
            }
        };
    module.exports = DOMChildrenOperations
},
/*!******************************************!*\
(node.defaultValue=props.defaultValue)},postMountWrapper:function(inst){var node=ReactDOMComponentTree.getNodeFromInstance(inst),textContent=node.textContent;textContent===inst._wrapperState.initialValue&&(node.value=textContent)}});module.exports=ReactDOMTextarea},/*!**************************************************!*\

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 02:22 08-11-2017 | Исправлено: ToBad, 02:36 08-11-2017
Mavrikii

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

Цитата:
Нахожу его и меняю так:  

если $ - это jQuery, то не можете так менять. вы пытаетесь работать как с чистым js, но в txt объект jQuery, у которого нет .value, но есть .val()
если хотите использовать сам нод, то var txt=$('#content-editor > div > aside > div > div:nth-child(2) > span:nth-child(1) > div > textarea')[0];
смотрите какие обработчики висят, плюс, на самом деле, работа может быть не с этим полем, а другим (как делается в случае WYSIWYG редактора в браузере - изначально текст в textarea, но потом копируется в редактируемый элемент и обратно в textarea может не попасть, либо попадает только при определенных ситуациях - например отправке формы).

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 02:35 08-11-2017 | Исправлено: Mavrikii, 02:35 08-11-2017
ToBad



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

Цитата:
var txt=$('#content-editor > div > aside > div > div:nth-child(2) > span:nth-child(1) > div > textarea')[0];

Так он undefined...
 
Я пытался делать так:
var txt=document.getElementsByClassName('o_input_theme_inputElement o_Input_Input_inputElement o_input_theme_filled o_Input_Input_filled')[1];
txt.value='new';
Сменить получается, а вот счётчик не меняется...

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 02:47 08-11-2017
Mavrikii

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

Цитата:
Так он undefined...  

значит под селектор ничего не попадает, потому и не работает.

Цитата:
Сменить получается, а вот счётчик не меняется...

все зависит от того, по какому событию он считается. прямая замена никаких событий не генерит

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 02:52 08-11-2017 | Исправлено: Mavrikii, 02:52 08-11-2017
ToBad



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Раньше, до смены интерфейса, всё работало подобным образом:

Код:
var txt=document.getElementsByClassName('o_input_theme_inputElement o_Input_Input_inputElement o_input_theme_filled o_Input_Input_filled')[1];
var e = new Event("keyup"); e.key=""; e.keyCode=e.key.charCodeAt(0); e.which=e.keyCode; e.altKey=false; e.ctrlKey=true; e.shiftKey=false; e.metaKey=false; e.bubbles=true;
txt.innerHTML='new'; txt.dispatchEvent(e);

Теперь не получается полноценно имитировать нажатие клавиши. Я думаю, если имитацией ввода с клавиатуры в textarea вписать символ - то это должно сработать. Примеров в интернете полно, вот только не срабатывает...

Всего записей: 270 | Зарегистр. 22-11-2006 | Отправлено: 03:08 08-11-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ToBad
еще раз повторю. посмотрите какие обработчики висят, на какое событие пересчитывается счетчик и кидаете это событие элементу. все, проблема решена. если есть jQuery, это делается еще проще.

Всего записей: 16419 | Зарегистр. 20-09-2014 | Отправлено: 03:12 08-11-2017 | Исправлено: Mavrikii, 03:13 08-11-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru