4

我有一些输入值包含在一堆 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";
4

2 回答 2

6
document.getElementById("finalTestBeforeAcTg").value = "your value";
于 2012-05-23T22:39:47.637 回答
3

如果您的脚本尝试不起作用,可能是因为以下一项或多项:

  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(您应该),请将 s 更改alert()unsafeWindow.console.log()s。


对于问题 2,使用该waitForKeyElements实用程序。例如,请参阅此答案


对于问题 3,如果不访问页面以找出正确的事件顺序,我们几乎无能为力。
让我们访问页面,或者使用 Firebug(和事件面板)来解决这个问题,或者页面的 HTML 和页面的 JS 文件的快照,在Pastebin.com就足够了(也许)。

于 2012-05-25T01:39:45.893 回答