使用greasemonkey输入输入值

时间:2012-05-23 22:34:57

标签: 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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

如果您的脚本尝试无效,可能是因为以下一项或多项:

  1. @include限制性太强。
  2. 该节点尚不存在。 AJAX是否在页面上处于活动状态?
  3. 必须触发必备的javascript事件才能使页面确认或接受新值。
  4. 对于问题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实用程序。例如,请参阅this answer


    对于问题3,我们几乎无法访问该页面以确定正确的事件顺序 让我们访问该页面,或者使用Firebug(和“事件”面板)来查明它,或者可能是页面的HTML和页面的JS文件的快照,Pastebin.com就足够了(也许)。