Введите значение ввода с помощью greasemonkey

У меня есть некоторые входные значения, содержащиеся в куче div и формы. У меня ограниченные знания js и я хотел бы использовать greasemonkey для установки значений при загрузке страницы.

Ниже показан порядок элементов div и форм для получения значения.

<div data-role="page" id="finalTest">                    
  <div data-role="content">
    <form class="cmxform" id="ftForm">
      <div id="finalTestForOtherDiv" >
        <div data-role="fieldcontain" class="special-spacing">
                <div class="input-div">
                    <label id="finalTestBeforeAcTgrLabel" for="finalTestBeforeAcTg" data-insight="true" 
                        class="mandatory" data-default="mandatory"><img class="label-image" alt="" src="../Images/icon-alert.png" />AC V (T/G):</label>
                    <input type="text" id="finalTestBeforeAcTg" name="finalTestBeforeAcTg" value="" style="width:100px; display:inline-block;" 
                        data-bind="binder.BeforeAcTg"  data-bind-action-when-hidden="Ignore" />
                    <span class="ui-content" style="padding-left:7px;">V</span>
                    <div class="error-message"><ul></ul></div>

                </div>

Вот сценарий, который я пытался использовать, но ничего не делает.

// ==UserScript==
// @name    Final Test
// @description Final test results
// @include https://techaccess.ad.qintra.com/WorkJobs/WorkJobs.aspx#finalTest
// ==/UserScript==

document.getElementById("finalTestBeforeAcTg").value = "0.00";

2 ответа

Решение
document.getElementById("finalTestBeforeAcTg").value = "your value";

Если ваша попытка сценария не работает, это может быть связано с одним или несколькими из следующих действий:

  1. @include слишком ограничительный
  2. Узел еще не существует. Активен ли AJAX на странице?
  3. Предварительные события javascript должны запускаться, чтобы страница подтверждала или принимала новое значение.

Для выпуска 1 измените скрипт на:

// ==UserScript==
// @name        Final Test
// @description Final test results
// @include     http://techaccess.ad.qintra.com/WorkJobs/*
// @include     https://techaccess.ad.qintra.com/WorkJobs/*
// ==/UserScript==

alert ("Script start.");

var finTestInput    = document.getElementById ("finalTestBeforeAcTg");
if (finTestInput) {
    finTestInput.value  = "0.00";
}
else {
    alert ("The target input does not exist yet!")
}

Обратите внимание, что если вы используете Firebug (вы должны), измените alert()с unsafeWindow.console.log()s.


Для выпуска 2 используйте waitForKeyElements полезность. Посмотрите этот ответ, например.


Для вопроса 3: Мы мало что можем сделать без доступа к странице, чтобы выяснить правильную последовательность событий.
Дайте нам доступ к странице, или используйте Firebug (и панель "События"), чтобы выяснить это, или, может быть, будет достаточно снимка как HTML страницы, так и файлов JS страницы, на http://pastebin.com/ (возможно).

Другие вопросы по тегам