[ 
https://issues.apache.org/jira/browse/CB-14188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16546557#comment-16546557
 ] 

ASF GitHub Bot commented on CB-14188:
-------------------------------------

brodybits commented on issue #276: CB-14188: add beforeload event, catching 
navigation before it happens
URL: 
https://github.com/apache/cordova-plugin-inappbrowser/pull/276#issuecomment-405571972
 
 
   Looks nice in general. A couple major comments on my part:
   
   The idea of passing an asynchronous callback to an event listener seems 
really strange to me. While I can definitely understand the logic behind making 
it asynchronous between native and JavaScript I don't think this really 
justifies introducing what looks like new paradigm in event listeners. I can 
think of the following alternative approaches:
   - event listener *synchronously* returns non-null value to indicate that 
application does not want to load the URL, in a similar fashion to a standard 
`beforeload` event handler ref: 
[[1]](https://eloquentjavascript.net/15_event.html#p_nu8/BUQa7r) (preferred)
   - event listener throws an exception to override default behavior, in a 
similar fashion to `backbutton` event on Windows ref: 
[[2]](https://cordova.apache.org/docs/en/latest/cordova/events/events.html#windows-quirks)
   - new asynchronous callback mechanism *outside* the event handler mechanism 
that the application can use to filter URL load requests
   
   The code also seems to assume that there would never be multiple outstanding 
load requests, which I would not agree with. What if a user clicks on a couple 
links in succession, or the webpage JavaScript issues multiple HTTP(S) requests?
   
   [1] <https://eloquentjavascript.net/15_event.html#p_nu8/BUQa7r>
   [2] 
<https://cordova.apache.org/docs/en/latest/cordova/events/events.html#windows-quirks>

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> Callback to decide whether to open link or not.
> -----------------------------------------------
>
>                 Key: CB-14188
>                 URL: https://issues.apache.org/jira/browse/CB-14188
>             Project: Apache Cordova
>          Issue Type: New Feature
>          Components: cordova-plugin-inappbrowser
>    Affects Versions: 3.0.0
>            Reporter: wvengen
>            Priority: Major
>
> Several times I've found myself wanting to tell inAppBrowser whether it can 
> open a link in the embedded webview or using the system web browser. It would 
> be great if there's a callback _before_ loading a page (loadstart is too late 
> there), where I can tell inAppBrowser to load the page or not.
> CB-14013 introduced AllowedSchemes, but excluded the use of http and https. 
> -It would be useful to allow intercepting http and https links, e.g. to 
> decide whether to open the link in the system web browser or not.- At first I 
> thought this mechanism could be used, but because of the asynchronous nature 
> of Cordova callbacks, this didn't work out, and I added a beforeload 
> callback. See comment for an example.
> I've submitted a PR -(my approach would be to generate a regexp based on 
> AllowedSchemes and match the URL on that, instead of the current if logic)-.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to