Cordova InAppBrowser loadror事件未针对错误500触发

时间:2016-06-10 09:54:59

标签: cordova cordova-plugins inappbrowser

我在使用InAppBrowser时遇到问题。我正在尝试捕获可能来自我正在加载的网站的错误,并且我通过错误的.htaccess来模拟这个错误。这会产生错误500.

我有以下代码:

ref = cordova.InAppBrowser.open($openuri, '_blank', 'location=no,toolbar=no,zoom=no,enableviewportscale=no,disallowoverscroll=no');
ref.addEventListener("loadstop",function() {
        .....
    });
ref.addEventListener("loaderror",function() {
        alert('Toot');
    });
ref.addEventListener('loadstart', function(event) {
        .....
});

网站正在打开,所有“loadstop”和“loadstart”事件都正常运行。但是,当我故意让页面返回“错误500”时,事件“loaderror”没有被触发。

它可以解决其他错误 - 例如手机上没有互联网时。

对于为何发生这种情况的任何想法都受到高度赞赏。

3 个答案:

答案 0 :(得分:5)

查看Android的InAppBrowser插件代码,它通常使用onReceivedError方法处理loaderror事件。所以我从webview的角度看了这个问题并偶然发现了这个链接 - https://code.google.com/p/android/issues/detail?id=968,它指出onReceivedError函数并不意味着捕获HTTP错误。

对于HTTP错误处理,我们可能必须使用不属于插件的onReceivedHttpError函数。我希望为什么这不起作用是有道理的。

答案 1 :(得分:0)

我正在使用Ionic 4,但我无法基于config.xml编辑使该解决方案正常工作:

preference name =“ ErrorUrl” value =“ myErrorPage.html” /

将addEventListener置于loaderror上也不起作用。看来它不是由http错误触发的,并且插件需要修复。

但是我们发现了一种更简单的黑客手段。

在loadstop上,我们等待500毫秒,然后通过使用and window.location.href触发executeScript来获取已加载的url

如果加载的网址属于自定义错误页面,则在Cordova(不是IAB)中,我们会显示带有后退按钮的自定义消息。

这是一个hack,但现在可以满足要求

答案 2 :(得分:-2)

这是我在InAppBrowser中处理状态码500的方式。

请不要尝试任何操作不要给予负面的评价因为其他人可能会有用,请先思考一下再提供一些信息。

您可以尝试使用ionic HTTP plugin

处理404或您要处理的任何状态代码

在事件'iab.on('loadstop')之前处理它

下面显示的图片,我们可以获取状态

enter image description here

**

它为我工作,我在我的项目中使用InAppBrowser,这是我的 解决方案

**

取决于您对要求的处理方式