4

Phonegap 1.7 中的Childbrowser 插件只能第一次打开。我正在使用 Phonegap 1.7 和 Childbrowser。只有第一次子浏览器工作。在我关闭 Childbrowser(按下完成按钮)后,当我尝试打开它时它不再打开。

我的代码是这样的:

$("a[target=_blank]").bind('click', function(e) {
  e.preventDefault();
  var thisUrl = $(this).attr('href');
  cb.showWebPage(thisUrl);
  alert("click");
}); 

当我单击一个链接时,Childbrowser 会弹出并显示该页面。我单击“完成”并返回。但是当我单击链接或其他链接时,Childbrowser 不再弹出,但每次都会显示警报“单击”。

ps 我从这里下载了 Childbrowser 插件

4

3 回答 3

3

Cordova 2.0.0 与 jQuery Mobile 1.1.1 结合使用时,我也遇到了这个问题。我设置链接的代码如下所示:

$(document).bind("pageinit", function() {
  onDeviceReady();
});
function onDeviceReady(){
  var root = this;
  cb = window.plugins.childBrowser;
  if (cb != null) {
    $('a[target="_blank"]').click(function(event){
      cb.showWebPage($(this).attr('href'));
      event.preventDefault();
    });
  }
}

注意:该pageinit事件与往常一样,$(document).ready()但针对 jQuery Mobile。

这样一来,ChildBrowser 在第一次链接单击时打开,但在关闭后不再打开。为了解决这个问题,我在后面添加了这两行event.preventDefault();

event.stopImmediatePropagation();
return false;

那是为我做的!

于 2012-09-07T05:03:09.940 回答
2

我在使用https://github.com/phonegap/phonegap-plugins/blob/master/iPhone/ChildBrowser/时遇到了同样的问题。

我解决了它破解 ChildBrowser.js 评论 4 行,如下所示。我意识到这两种方法被调用,所以可能会发生某种冲突。我希望这会有所帮助。

ChildBrowser.prototype.showWebPage = function(loc) { 
//  if (typeof PhoneGap !== "undefined")
//  {
//      PhoneGap.exec("ChildBrowserCommand.showWebPage", loc);
//  }
    if (typeof Cordova !== "undefined")
    {
        Cordova.exec("ChildBrowserCommand.showWebPage", loc);
    }
};
于 2012-05-29T13:51:24.600 回答
1

我对科尔多瓦 1.9 有同样的问题。

我使用的插件版本对 showWebPage 函数有不同的代码:

// Show a webpage, will result in a callback to onLocationChange
ChildBrowser.prototype.showWebPage = function(loc)
{
    cordovaRef.exec("ChildBrowserCommand.showWebPage", loc);
};

我在日志中注意到,当子浏览器出现故障时,javascript 'click' 函数会快速连续调用两次。有时会在第一次点击时发生,有时会在 5 或 6 次之后发生。

2012-07-27 09:27:12.155 XX[10562:707] [INFO] JS :: Should open in childBrowser
2012-07-27 09:27:12.158 XX[10562:707] Opening Url : http://www.google.co.uk/
2012-07-27 09:27:12.160 XX[10562:707] [INFO] JS :: Should open in childBrowser
2012-07-27 09:27:12.161 XX[10562:707] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> Application tried to present modally an active controller <MainViewController: 0x157e50>.

我尝试在单击按钮后从按钮中删除单击事件,然后将其重新应用于 childBrowser.onClose 事件,这似乎确实有助于解决子浏览器崩溃问题。

于 2012-07-27T08:38:10.637 回答