gpt4 book ai didi

javascript - 为什么我不能用 VBA 访问这个弹出框的内容?

转载 作者:行者123 更新时间:2023-11-28 00:58:26 25 4
gpt4 key购买 nike

这是弹出框的 html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- BEGIN /layouts/new_empty_layout.jsp -->











<html>
<head>
<title>SERFF - System for Electronic Rate and Form Filing</title>
<!-- Copyright 2016 National Association of Insurance Commissioners -->


<link rel="stylesheet" type="text/css" href="/styles/serff-core.css"/>
<link rel="stylesheet" type="text/css" href="/styles/core-header.css"/>
<link rel="stylesheet" type="text/css" href="/styles/core-content.css"/>
<link rel="stylesheet" type="text/css" href="/scripts/jquery-ui-css/custom-theme/jquery-ui-1.10.4.custom.css"/>





<script type="text/javascript">
var staticUrlPath = '/';
var appUrlPath = '/serff/';
</script>
<script type="text/javascript" src="/scripts/jquery-1.12.1.min.js"></script>
<script type="text/javascript" src="/scripts/jquery.textarea.pack.js"></script>
<script type="text/javascript" src="/scripts/jquery-ui-1.10.0.min.js"></script>
<script type="text/javascript" src="/scripts/datepicker.js"></script>
<script type="text/javascript" src="/scripts/default_layout.js"></script>





<script>
// custom SERFF dimensions:
// dimension1 = SERFF User Type custom GA dimension

var analyticsEnabled = true;

// insert the analytics script and initialize the Google Analytics "ga" object
if(analyticsEnabled){
var currentScript = document.currentScript || (function() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
})();

var gaScript = document.createElement('script');
gaScript.async = true;
gaScript.src = '/public/lib/ga/analytics.js';
document.getElementsByTagName("head")[0].insertBefore(gaScript, currentScript);

var ga = window.ga = window.ga || function(){(window.ga.q = window.ga.q || []).push(arguments)};
window.ga.l = +new Date();
window.GoogleAnalyticsObject = 'ga';
ga('create', 'UA-5133885-7', 'auto');
}

function analyticsPageView()
{
doSendAnalytics(function() {
ga('send', 'pageview');
});
}

function analyticsPageViewWithUserType()
{ doSendAnalytics(function() {
ga('send', 'pageview', {
'dimension1' : getUserType()
});
});
}

function analyticsEvent(eventCategory, eventAction, callback){
if(callback){
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction, {'hitCallback': callback});
});
} else {
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction);
});
}
}

function analyticsEventWithUserType(eventCategory, eventAction, callback){
if(callback){
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction, {'hitCallback': callback, 'dimension1' : getUserType()});
});
} else {
doSendAnalytics(function() {
ga('send', 'event', eventCategory, eventAction, {'dimension1' : getUserType()});
});
}
}

function getUserType(){
var userType = 'I';
if(userType == 'S'){
userType = 'State User';
} else if(userType == 'I') {
userType = 'Industry User';
} else if (userType == 'N') {
userType = 'NAIC Admin User';
}
return userType;
}

// only send a message to GA if enabled in the INI file
function doSendAnalytics(method){
if(analyticsEnabled){
method();
}
}


</script>

<link rel="stylesheet" type="text/css" href="/styles/forms2.css"/>
<!-- BEGIN /layouts/iefixes.jsp -->





















<!-- END /layouts/iefixes.jsp -->



</head>

<body>
<div id="content">
<div id="main" style="background: none;">
<!-- Copyright 2014 National Association of Insurance Commissioners -->
<!-- BEGIN /filing/ -->








<html>
<head>
<title>SERFF - System for Electronic Rate and Form Filing</title>
<link rel="stylesheet" type="text/css"
href="/styles/serff-core.css" />
<link rel="stylesheet" type="text/css"
href="/styles/core-header.css" />
<link rel="stylesheet" type="text/css"
href="/styles/core-content.css" />
<link rel="stylesheet" type="text/css"
href="/styles/forms2.css" />
<!-- BEGIN /layouts/iefixes.jsp -->





















<!-- END /layouts/iefixes.jsp -->


<script language="javascript">
var uploadSubmitted = false;
$( document ).ready(function() {
$( 'form' ).submit(function( event ) {
if (uploadSubmitted) {
alert( "You have already performed this action. Please wait for the page to refresh." );
event.preventDefault();
} else {
uploadSubmitted = true;
}
});
});

var skipcycle = false;
function updateAttachments() {

var groupId = window.opener.selectedAttachmentGroup;
if (uploadForm.groupId.value == null || uploadForm.groupId.value ==''){
uploadForm.groupId.value = groupId;
}
var index = window.opener.selectedIndex;
if (uploadForm.index.value == null || uploadForm.index.value ==''){
uploadForm.index.value = index;
}

}

function focusOnMe(){
if (!skipcycle){
window.focus();
}
mytimer = setTimeout('focusOnMe()', 500);
}

</script>
</head>
<body onload = "mytimer = setTimeout('focusOnMe()', 500);updateAttachments();">
<h2>SERFF File Attachment Upload</h2>
<div class="documentArea">
<form name="uploadForm" method="POST" action="/serff/uploadFileAttachment.do" class="styled" enctype="multipart/form-data" id="uploadForm">
<input type="hidden" name="groupId" />
<input type="hidden" name="index" />







<input type="hidden" name="attachmentType" value="0">

<div class="uploadWarning" style="width:325px">
Attachments larger than 3MB or Microsoft Word(tm) documents cannot be uploaded to SERFF.
</div>


<div class="fieldgroup">File 1:&nbsp;&nbsp; <input type="file" name="contentIndexed[0]" value="" onfocus="skipcycle=true" class="inputFile"></div>

<div class="fieldgroup">File 2:&nbsp;&nbsp; <input type="file" name="contentIndexed[1]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>

<div class="fieldgroup">File 3:&nbsp;&nbsp; <input type="file" name="contentIndexed[2]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>

<div class="fieldgroup">File 4:&nbsp;&nbsp; <input type="file" name="contentIndexed[3]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>
<div class="fieldgroup">File 5:&nbsp;&nbsp; <input type="file" name="contentIndexed[4]" value="" onfocus="skipcycle=true" class="inputFile"><br />
</div>
<br />
<div class="actionButtons">
<input type="submit" value="Upload" class="inputSubmit">
<input type="button" class="inputButton" onclick="window.close();" value="Cancel" />
</div>
</form>
</div>
</body>
</html>
<!-- END /filing/fileUpload.jsp -->

</div> <!-- end main div -->
</div> <!-- end content div -->
</body>
</html>
<!-- END /layouts/new_empty_layout.jsp -->

我试图通过使用 vba“单击”其中一个浏览按钮来显示上传文件对话框。问题是 vba 不会让我在 uploadForm 中找到输入标签。

我自己的代码:

Set uploadForm = ieUpload.document.getElementById("uploadForm")
For Each inputTag In uploadForm.getElementsByTagName("input")
If inputTag.Name = "contentIndexed[0]" Then inputTag.Click
Next inputTag

Vba 在 for 循环中引发“对象变量或未设置 block 变量”错误。

最佳答案

在聊天中讨论后编辑

原来文档还没有加载完。检查 ieUpload.Busy 就可以了。参见,例如 this question ,它在 DoEvents 循环中检查 Busy

原始答案

首先:

  • 确保您的源文件顶部有Option Explicit
  • 确保您已将对象引用添加到您正在使用的 HTML 库中。除非别无选择,否则不要使用 CreateObject!
  • 确保您已使用 Dim 为所有变量指定特定类型 — 而不是 VariantObject

现在,假设您正在使用 MSHTML,没有函数 document.getElements按 ID。您想要的是 getElementById,没有“Elements”上的“s”。单步执行代码 — 我怀疑 uploadForm 在您点击 For 循环时是 Nothing,因此 uploadForm.getElementsByTagName 引发了错误。

编辑 那我为什么要提到添加上面的引用呢?因为如果您添加了引用,并且您说过 Dim uploadForm as MSHTML.IHTMLElement2,VBA 编辑器会自动将大小写更改为 uploadForm.getElementsByTagName。既然没有,我假设您没有安装 Dim,或者它不是特定的 Dim

(当然,除非您创建了一个名为 getelementsbytagname 的变量,您不应该这样做:))

Here's一个 MSHTML 示例,链接自 this answer .

关于javascript - 为什么我不能用 VBA 访问这个弹出框的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43478346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com