以下方案。我有一个简单的用户名和密码登录表单。 用户单击登录按钮是否将表单发布到正在检查凭据的服务器。当它们没问题时,会重定向到默认目标网页。
为了发送表格数据,我写了以下内容:
static async postData<TResult>(options: { method: string, url: string, data?: any }): Promise<TResult> {
return new Promise<TResult>((resolve, reject) => {
try {
const xhr = new XMLHttpRequest();
xhr.onload = (): void => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(xhr.response);
} else {
reject(xhr.status);
}
}
};
xhr.withCredentials = true;
xhr.open(options.method, options.url, true);
xhr.send(options.data);
} catch (e) {
console.error(e);
}
});
}
被称为:
const response = await postData({ method: theForm.method, url: theForm.action, data: formData })
.then(response => {
console.log(response);
})
.catch(reason => {
console.error(reason);
});
在Chrome和Firefox中,响应具有responseURL
- 属性,我可以使用该属性设置window.location.url = xhr.responseURL;
以重定向页面。但是这在IE中不起作用,因为响应类型是完全不同的东西。
另一方面,我在xhr.responseText中有完整的HTML(重定向的内容,也就是着陆页的内容),但我不知道如何使用它?
我尝试按照here所述替换页面内容但是这会在Chrome和IE中引发一系列错误,而这些错误根本无法显示
SCRIPT70:权限被拒绝
一些额外的说明。我正在使用TypeScript
编写针对es6的客户端代码,然后使用babel-loader
通过webpack
将其转换为es5。
答案 0 :(得分:0)
我认为你需要尝试下一个代码:
Sub test()
Dim frm As New UserForm1
frm.Show vbModeless
Do
DoEvents
If frm.Cancelled Then
Unload frm
Exit Do
End If
Loop Until False
MsgBox "You closed the modeless form."
'/ Using With
With New UserForm1
.Show vbModeless
Do
DoEvents
If .Cancelled Then Exit Do
Loop Until False
End With
MsgBox "You closed the modeless form (with)"
End Sub