Greasemonkeyスクリプトを作成して、オンラインチケットシステムのいくつかのオプションの設定を自動化し、ロギングコールをより効率的にするためです。Greasemonkeyスクリプトを使用してフレーム内で関数を呼び出す
とにかく、呼び出しを記録するための画面は複数のフレームで構成されていますが、私はオートメーションに関して興味があります。私がやろうとしています何
<html>
<head>
</head>
<frameset framespacing="0" border="0" bordercolor="#ffffff" rows="130,*,22,0">
<frame scrolling="no" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" noresize="" src="top.asp?menu=&page=" name="menu">
</frame>
<frameset id="contentCols" framespacing="8" border="8" cols="250, *" bordercolor="#ffffff">
<frame marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" border="0" src="../service/loading.html" name="content" frameborder="0" style="padding-right: 10px;">
<html>
<head>
</head>
<body class="winBack" style="background-color: rgb(255, 255, 255);">
<div id="scrollableContainer" class="lockedTableContainer scrollableContainerHeight" style="position: relative; height: 0px;">
<table cellspacing="1" cellpadding="3" border="0">
<form id="configFields" name="configFields" method="post" action="/ics/tt/ticketNew.asp"></form>
<input type="hidden" value="" name="task">
<input type="hidden" value="account" name="source">
<tbody>
<tr id="ROW_109094">
<td class="webCaption" style="width: 160px;">
</td>
<td class="formText">
<select id="FIELD_109094_DROPDOWN_null" class="formText" style="width: 200px;" title="Establishment Type" name="FIELD_109094_DROPDOWN_null" onchange="updateDep(109094, this.options[this.selectedIndex].value);">
</select>
</td>
</tr>
</tbody>
<table>
</div>
</frame>
</frameset>
</frameset>
</html>
がFIELD_109094_DROPDOWN_null
select要素のselectedIndex
設定されている次のようにページと(私は編集しようとしている要素を含む)フレームのストリップダウンHTMLが表示されます。
次に、要素の変更イベントにアタッチされているupdateDep
関数(フレームに添付されたスクリプトに含まれています)を実行しようとしています。この関数は、select要素に現在設定されている値に応じて、他のフィールドを表示します。 Firebugののコンソールを使用して
私は、次の2行使ってこれを実現することができます:私はGreasemonkeyのスクリプトにこれを入れたときに、しかし
frames["content"].document.getElementById("FIELD_109094_DROPDOWN_null").selectedIndex = 2;
frames["content"].updateDep(109094, frames["content"].document.getElementById("FIELD_109094_DROPDOWN_null").options[2].value);
を、メインウィンドウのonload、またはフレームのonloadのいずれかにそれを添付。私は経由updateDep
機能を実行する方法を見つけ出すことはできません
document.getElementById("FIELD_109094_DROPDOWN_null").selectedIndex = 2;
:しかし、私は少なくともselect要素の選択されたインデックスを変更することができ、私が使用している場合
Error: frames.content.document.getElementById("FIELD_109094_DROPDOWN_null") is null
、次のコード:私はこのエラーを取得しますGreasemonkeyスクリプト。スクリプト内のコードは次のように表示されます。
// ==/UserScript==
var initElements = (function() {
var elementExists = document.getElementById("FIELD_109094_DROPDOWN_null");
if(elementExists)
{
document.getElementById("FIELD_109094_DROPDOWN_null").selectedIndex = 2;
frames["content"].updateDep(109094, frames["content"].document.getElementById("FIELD_109094_DROPDOWN_null").options[2].value);
}
}
)();
window.addEventListener('load', initElements, false);
ご協力いただければ幸いです。
ねえBrockさん、これは完全に働いた、私はそれを本当に感謝ありがとうございました。 – achillesminor
ようこそ。喜んで助けてください。 –