4

一連のdivとフォームにいくつかの入力値が含まれています。私はjsの知識が限られているので、ページが読み込まれるときにグリースモンキーを使用して値を設定したいと思います。

以下に、値を取得するための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つ以上が原因である可能性があります。

  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()sをsに変更することに注意してくださいunsafeWindow.console.log()


問題2については、waitForKeyElementsユーティリティを使用してください。たとえば、この回答を参照してください。


問題3については、イベントの適切なシーケンスを検討するためにページにアクセスせずにできることはほとんどありません。
ページへのアクセスを許可するか、Firebug(およびイベントパネル)を使用してページを把握するか、Pastebin.comでページのHTMLとページのJSファイルの両方のスナップショットで十分です(多分)。

于 2012-05-25T01:39:45.893 に答える