cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Laxman (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CB-13198) InAppBrowser doesnot disptach events after system browse is open.
Date Sat, 19 Aug 2017 10:25:01 GMT
Laxman created CB-13198:
---------------------------

             Summary: InAppBrowser doesnot disptach events after system browse is open.
                 Key: CB-13198
                 URL: https://issues.apache.org/jira/browse/CB-13198
             Project: Apache Cordova
          Issue Type: Bug
          Components: cordova-plugin-inappbrowser
            Reporter: Laxman


The InAppBrowser instance does not automatically dispatch the events after the system browser
is opened via InAppBrowser. Please follow the generic code below:

{code:java}
//example 1 : bug with cordova.InAppBrowser.open(url, '_system');
//event hander for inAppBrowser
function inAppBrowserEventHandler(event){
  //process few logic with the event parameter
  //and if conditions met lets open it on system browser
  var url = 'https://cordova.apache.org/';

  //open the url in system browser
  var _inAppBrowserSystem = cordova.InAppBrowser.open(url, '_system');
}
//open the link in inside the iAB without
var _inAppBrowser = cordova.InAppBrowser.open(url, '_blank');
_inAppBrowser.addEventListener('loadstop', inAppBrowserEventHandler);
{code}

The _inAppBrowser instance works fine for the first time. But as soon as the system browser
is opened, the event 'for eg. loadstop' does not fire automatically. This bug/issue appears
only when system browser is open. for eg, the following code works perfectly.

{code:java}
//example 2 : no bug without cordova.InAppBrowser.open(url, '_system');
//event hander for inAppBrowser
function inAppBrowserEventHandler(event){
  //process few logic with the event parameter
  //and if conditions met lets open it on system browser
  var url = 'https://cordova.apache.org/';

  //log the url in the console instead of browser
  console.log('open this url in the system browser ' + url)
}
//open the link in inside the iAB without
var _inAppBrowser = cordova.InAppBrowser.open(url, '_blank');
_inAppBrowser.addEventListener('loadstop', inAppBrowserEventHandler);
{code}

It seems the new '_inAppBrowserSystem' instance somehow interrupts the event dispatcher for
the '_inAppBrowser' instance. I found that if the _inAppBrowserSystem is assign the same eventHandler,
then _inAppBrowser starts to dispatch the event. The following code helped me solve the problem
but this should still be registered as a bug. 

{code:java}
//example 3 : hack/solution with cordova.InAppBrowser.open(url, '_system');
//event hander for inAppBrowser
function inAppBrowserEventHandler(event){
  //process few logic with the event parameter
  //and if conditions met lets open it on system browser
  var url = 'https://cordova.apache.org/';

  //open the url in system browser
  var _inAppBrowserSystem = cordova.InAppBrowser.open(url, '_system');

   //for somereason, after assigning the same event handler to the _inAppBrowserSystem, the
event dispatcher continues to work
  _inAppBrowserSystem.addEventListener('loadstop', inAppBrowserEventHandler);
}
//open the link in inside the iAB without
var _inAppBrowser = cordova.InAppBrowser.open(url, '_blank');
_inAppBrowser.addEventListener('loadstop', inAppBrowserEventHandler);
{code}

I have the solution for now, but I still register this as a bug as the event dispatcher is
not consistent. For instance, the code in 'example 1' should work as in 'example 2'.  If there
is not a quick fix, I hope at least the documentation get updated with this hack.

Thx
Laxman




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message