3

onclickVBA のオートメーションを使用して、フォーム上のボタンのイベントから関数呼び出しを変更しようとしています。関数Xは既に Web ページにハードコードされており、そのコードを変更するアクセス権がありません。(このページは社内のページですが、私はその部門には属していません)。

私のシナリオが収まったら、 functionXを new functionに置き換えたいと思いますY

この SO と同様の質問があるようですが、ほとんどの場合、JS コード内から要素属性を変更することを参照しているようです。私の問題は、VBAでこれを行う必要があり、そこに到達する方法がわからないことです。

このサイトsetAttributeには、このプロセス ( 、getAttributeなど)に関する多くの情報があります。これには、あるブラウザーと別のブラウザーを使用する場合の注意事項に関する有用な情報が含まれています。私のコードはすべて IE (会社が提供するもの) とやり取りするので、他のブラウザー オプションについて心配する必要はありません。

属性を変更しようとするとonclick、VBE ウォッチ パネルに属性の変更が表示されますが、期待どおりに動作しません。属性を変更した後、クリックしても何も起こりません ( objButton.Click/の自動化によってobjButton.onclick、または実際にボタンを手動でクリックすることによって)。他の属性 (つまり ) でもこれを試しましたonfocusが、同じ結果が得られました。上記のリンクでは、IE にはこれに問題があると書かれていますが、私は JavaScript にあまり詳しくなく、ガイドに従うのに苦労しています。

私が試したのは次のとおりですが、すべて同じ結果になります。

オプション1:

Set TEST = myIEWindow.Document.createattribute("onclick")
TEST.nodevalue = "function anonymous() {alert(""test""); };"
objButton.setAttributeNode TEST

オプション 2:

objButton.Attributes("onclick").value = "function anonymous() {alert(""test""); };"

オプション 3:

objButton.Attributes("onclick").value = "alert(""test"");"

オプション 4:

objButton.setAttribute "onclick", "alert(""test"");"

オプション 5:

objButton.onclick = "function() { alert(""test""); };"

これらのさまざまなメソッドを試しているときに、VBE ウォッチ ウィンドウのonclick属性のが、新しい関数を呼び出すようにボタンを強制しようとした後、元の型の Variant/Object から Variant/String に変わることに気付きました。これには何かがあると感じています。私の問題を処理します。

誰かが(可能であれば)これを機能させる方法を説明できますか?

4

1 に答える 1

1

これは、要素のプロパティで直接変更できます。

var objButton = document.getElementById("buttonId");
objButton.onclick = function() { alert("test"); };
于 2012-03-23T19:17:34.053 に答える