3

我正嘗試使用VBA中的自動化在表單上的按鈕的onclick事件中更改函數調用。功能X已被硬編碼到網頁中,並且我無權更改該代碼。 (該頁面在我的公司內部,但我不在該部門)。JavaScript/VBA自動化:更改onclick屬性

當我的情況合適時,我想用新函數Y替換函數X

我對這個問題似乎有類似的問題,但它似乎最引用了從JS代碼中更改元素屬性。我的問題是,我需要這樣的VBA,我不知道如何到達那裏。

This site有關於此過程(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類型/對象的窗口改變試圖迫使後按鈕來調用新功能,我覺得這與我的問題有關。

有人可以請解釋如何(如果可能)我可以得到這個工作?

回答

1

您可以直接在元素屬性中更改它。

var objButton = document.getElementById("buttonId"); 
objButton.onclick = function() { alert("test"); }; 
+0

這看起來更像是JS,而不是VBA,而且我無法直接更改JS。我試着'objButton.onclick =「function(){alert(」「test」「);};」'根據你的回答,但是這不起作用,不幸的是。它與我列出的其他方法具有相同的效果。我可以在監視面板中看到屬性值已經改變(同樣,也是從Variant/Object到Variant/String的類型)並且當我單擊時沒有任何反應。 – Gaffi 2012-03-23 19:22:48

+1

調用myIEWindow.Document.execScript(「document.getElementById('buttonId')。onclick = function(){alert('test');};」) – Vyrx 2012-03-23 20:07:15

+0

這給了我一個「對象不支持這個屬性或方法「錯誤。現在尋找更多信息RE:'execScript' ... – Gaffi 2012-03-23 20:12:18