我正嘗試使用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類型/對象的窗口改變試圖迫使後按鈕來調用新功能,我覺得這與我的問題有關。
有人可以請解釋如何(如果可能)我可以得到這個工作?
這看起來更像是JS,而不是VBA,而且我無法直接更改JS。我試着'objButton.onclick =「function(){alert(」「test」「);};」'根據你的回答,但是這不起作用,不幸的是。它與我列出的其他方法具有相同的效果。我可以在監視面板中看到屬性值已經改變(同樣,也是從Variant/Object到Variant/String的類型)並且當我單擊時沒有任何反應。 – Gaffi 2012-03-23 19:22:48
調用myIEWindow.Document.execScript(「document.getElementById('buttonId')。onclick = function(){alert('test');};」) – Vyrx 2012-03-23 20:07:15
這給了我一個「對象不支持這個屬性或方法「錯誤。現在尋找更多信息RE:'execScript' ... – Gaffi 2012-03-23 20:12:18