@@ -234,9 +234,11 @@ function _loadLink(href, {
234234 const controller = new AbortController ( ) ;
235235 const signal = passedSignal instanceof AbortSignal ? AbortSignal . any ( [ controller . signal , passedSignal ] ) : controller . signal ;
236236
237- passedSignal . addEventListener ( 'abort' , ( { target } ) => {
238- reject ( target . reason ) ;
239- } , { signal : controller . signal } ) ;
237+ if ( passedSignal instanceof AbortSignal ) {
238+ passedSignal . addEventListener ( 'abort' , ( { target } ) => {
239+ reject ( target . reason ) ;
240+ } , { signal : controller . signal , once : true } ) ;
241+ }
240242
241243 link . referrerPolicy = referrerPolicy ;
242244
@@ -307,7 +309,11 @@ function _getLinkStateData(a) {
307309function _interceptLinkClick ( event ) {
308310 if ( event . target . classList . contains ( 'no-router' ) || event . target . hasAttribute ( onClick ) ) {
309311 event . target . removeEventListener ( _interceptLinkClick ) ;
310- } else if ( event . isTrusted && event . currentTarget . href . startsWith ( location . origin ) ) {
312+ } else if (
313+ event . isTrusted
314+ && event . currentTarget . href . startsWith ( location . origin )
315+ && ! ( event . metaKey || event . ctrlKey || event . shiftKey )
316+ ) {
311317 event . preventDefault ( ) ;
312318 const state = _getLinkStateData ( event . currentTarget ) ;
313319 navigate ( event . currentTarget . href , state , {
@@ -316,7 +322,7 @@ function _interceptLinkClick(event) {
316322 referrerPolicy : event . currentTarget . dataset . referrerPolicy ,
317323 } ) ;
318324 }
319- } ;
325+ }
320326
321327async function _interceptFormSubmit ( event ) {
322328 if ( event . target . classList . contains ( 'no-router' ) || event . target . hasAttribute ( onSubmit ) ) {
0 commit comments