Как сделать window.history.go (-1) из кода Blazor c #? - PullRequest
0 голосов
/ 24 декабря 2018

Как сделать window.history.go (-1) из кода c # на Blazor?

Я пытался использовать JSRuntime.Current.InvokeAsync

JSRuntime.Current.InvokeAsync< string >( "history.go", new[] {-1} );
JSRuntime.Current.InvokeAsync< string >( "top.history.go", new[] {-1} );
JSRuntime.Current.InvokeAsync< string >( "window.history.go", new[] {-1} );
JSRuntime.Current.InvokeAsync< string >( "window.top.history.go", new[] {-1} );

, но я получаю ошибку:go вызывается для объекта, который не реализует интерфейс History.

Но он работает из cshtml:

<button id="BtnBack" type="button" onclick="window.history.go(-1)" class="btn btn-default">Back</button>

1 Ответ

0 голосов
/ 25 декабря 2018

Не уверен в деталях, но я считаю, что для такого взаимодействия вам нужно быть немного более откровенным.Поэтому, если вы поместите этот скрипт в вашу index.html (не там, где я бы порекомендовал вам запустить его в производство):

<script>
    window.test = {
        historyGo(value) {
            window.history.go(value);
        }
    };
</script>

Затем поместите этот код на вашу страницу Blazor:

<button type="button" onclick="@OnClick">Go Back</button>

С таким обработчиком событий:

private void OnClick()
{
    JSRuntime.Current.InvokeAsync<object>("test.historyGo", -1);
}

Все работает так, как вы ожидаете.Я попробовал подход, который вы выбрали (без явного уровня взаимодействия в вашем JS), и также увидел, что он не работает.Но это кажется разумным решением проблемы.Было бы интересно узнать, почему этот работает, а ваш код - нет, но, надеюсь, это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...