안녕하세요
예, 방법이 있습니다. 이벤트에서 뒤로 또는 앞으로 탐색을 취소하여 원본에서 수행합니다 NavigationStarting . 최근 WebView2 빌드는 NavigationKind+BackOrForward, 마우스 쪽 단추 Alt 또는 페이지 자체Left에서 왔는지 여부에 관계없이 구별하고 중단 history.back 할 수 있도록 노출됩니다.
// After CoreWebView2 is created.
EventRegistrationToken navToken{};
CHECKHR(m_webview->add_NavigationStarting(
Microsoft::WRL::Callback<ICoreWebView2NavigationStartingEventHandler>(
[](ICoreWebView2* /*sender*/,
ICoreWebView2NavigationStartingEventArgs* args) -> HRESULT
{
wil::com_ptr<ICoreWebView2NavigationStartingEventArgs3> args3;
if (SUCCEEDED(args->QueryInterface(IID_PPV_ARGS(&args3))))
{
COREWEBVIEW2_NAVIGATION_KIND kind{};
if (SUCCEEDED(args3->get_NavigationKind(&kind)) &&
kind == COREWEBVIEW2_NAVIGATION_KIND_BACK_OR_FORWARD)
{
// Block back or forward.
args->put_Cancel(TRUE);
}
}
return S_OK;
}
).Get(),
&navToken));
NavigationKind.BackOrForward는 + 및 DOM 기록 호출 Alt 과 같은 사용자 제스처를 포함하도록 명시적으로 정의 Left 되어 있으므로 취소하면 앞뒤로 안정적으로 비활성화됩니다. **NavigationKind API는 SDK 1.0.1901.177Win32부터 ICoreWebView2NavigationStartingEventArgs3 사용할 ** 수 있습니다.
이전 런타임 또는 SDK가 부족한 경우 NavigationKind정확한 WebView2 SDK 및 런타임 버전을 알려주시면 대안을 보여 드리겠습니다.