Из соображений безопасности спецификации на самом деле этого не позволяют. Хотя я только что проверил это с Edge, Chrome, Firefox и IE, и это сработало. Не могли бы вы уточнить, как это не сработало?
Во всяком случае, я решил попробовать другой метод, который не подразумевает закрытие окна, и он работал в тех же четырех браузерах.
В Payout.cshtml
var newWindow;
function authenticate() {
newWindow = window.open("@Url.Action("Authenticate")");
window.setTimeout(tryCloseWindow, 5000);
}
function tryCloseWindow() {
try {
if (newWindow.closeMe == undefined) {
window.setTimeout(tryCloseWindow, 1000);
return;
}
} catch(ex) {
// window was closed by user
return;
}
newWindow.close();
}
Authenticate.cshtml
<button onclick="pay();">pay</button>
@section Scripts
{
<script>
function pay() {
window.location = "@Url.Action("Close")";
}
</script>
}
Close.cshtml
@section Scripts
{
<script>
window.closeMe = true;
</script>
}