javascript - VBA:如何在图像上没有 ID 或名称的情况下触发 onclick 事件?
问题描述
我正在尝试使用 VBA 在 IE 中为想象触发 onclick 事件。Image 只有 Onclick、alt 和 src。我不知道如何循环到图像然后触发 onclick。
我已经尝试过几种不同的方式循环,但没有一个解决方案适用于我的具体情况。通常,它们涉及具有内部文本,而我没有。
Excel VBA(这是错误的,但我想要这样的东西)
Dim elements As Object, element As Object
Set elements = ieDoc.getElementsByTagName("img")
For Each element In elements
If element.innerText = "Export to Excel" Then
element.Click
End If
Next
JavaScript
function fnForecast_Export() {
try {
var sSearch = txtSearch.value.trim().sqlEscape().xmlToSpecial();
if (sSearch === "") {fnGlobal_Alert(g_sBLANKSEARCH); return;}
var sSQL = "qryGetCustomerForecastList 'SearchExport','" + fnSQLWild(sSearch, false) + "','" +
txtStartDate.value + "','" + txtEndDate.value + "'," + drpCustomer.value + "," +
drpPlant.value + "," + g_iPageID + ",'" + drpSortOrder.value + "'," + drpSortDirection.value;
var sURL = g_sAppPath + "forecasting/ForecastExportWindow.asp" +
"?Rnd=" + Math.random() +
"&PageName=Customer" +
"&SQL=" + sSQL +
"&StartDate=" + g_sStartDate +
"&EndDate=" + g_sEndDate;
top.fraHeader.fnWait("Exporting...", "", 15000);
var oFrame = document.getElementById("fraExportFrame");
if (oFrame !== null) {
oFrame.src = sURL;
} else {
var oNewFrame = document.createElement("IFRAME");
oNewFrame.id = "fraExportFrame";
oNewFrame.src = sURL;
oNewFrame.style.height = "0px";
oNewFrame.style.width = "0px";
document.appendChild(oNewFrame);
}
} catch(e) {
fnErrorHandler(e, "");
}}
HTML
<TD id=tdBlock class=tdCriteriaBlock noWrap>
<IMG onclick=fnForecast_Search(); alt=Search src="/PE372/images/search.gif">
<IMG onclick=fnForecast_Export(); alt="Export to Excel" src="/PE372/images/excel.gif">
<IMG onclick=fnForecast_SearchClear(); alt="Clear Search Criteria" src="/PE372/images/eraser.gif"> </TD>
我想运行网页 javascript 中的“fnForecast_Export()”函数。
解决方案
如果您不能使用 querySelector,那么您将需要尝试使用循环并考虑在框架标签中。
Dim imgs As Object, img As MSHTML.HTMLImg
Set imgs = ieDoc.getElementsByTagName("frame")(0).contentDocument.getElementsByTagName("img") 'you may need to change index from 0 to appropriate one.
For Each img In imgs
If img.hasAttribute("alt") Then
If img.getAttribute("alt") = "Export to Excel" Then
''choose your option
img.Click
'img.FireEvent "onclick"
Exit For
End If
End If
Next
推荐阅读
- react-native - react-native-reanimated 和 react-native-gesture-handler X/Y 坐标
- angular - NgIf 性能问题应用于 div 而不是 ng-container
- javascript - JQuery 根据 Contact Form 7 中的选择值自动填充文本字段
- powerbi - Power Bi DAX:相对日期过滤
- python - 当其中一个是无限的时如何获得两个可迭代的笛卡尔积
- r - Shiny:它如何处理并发请求?
- php - PHP合并两个路径 - 相对绝对
- laravel - 如何在 Laravel 中建立关系
- css - 如何从这个 WordPress 主题中删除要点?谢谢
- maven - Liferay Portlet Maven 依赖异常