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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

unreal666



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

Всего записей: 6637 | Зарегистр. 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;
}  
}
)();  

Всего записей: 1584 | Зарегистр. 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 открываются? ну так и указывайте это

Всего записей: 15038 | Зарегистр. 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 по прежнему нет.  
Но видимо это уже не сюда задавать.

Всего записей: 1584 | Зарегистр. 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 не получается.

Всего записей: 322 | Зарегистр. 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

Всего записей: 15038 | Зарегистр. 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
Та программа, фактически, показывает капчу как браузер при посещении сайта.

Всего записей: 15038 | Зарегистр. 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 адрес, поле из формы рекапчи сформированное ранее и поле ответа из той же формы.
потом эта вся инфа отправляется на сайт гугля, который проверят валидность данных.

Всего записей: 15038 | Зарегистр. 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
элементарно смотрится в панели разработчика в браузере

Всего записей: 15038 | Зарегистр. 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

Всего записей: 15038 | Зарегистр. 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 может не попасть, либо попадает только при определенных ситуациях - например отправке формы).

Всего записей: 15038 | Зарегистр. 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...  

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

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

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

Всего записей: 15038 | Зарегистр. 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, это делается еще проще.

Всего записей: 15038 | Зарегистр. 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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru