"Cannot read property 'addEventListener' of undefined" 使用 Ionic2 InAppBrowser
"Cannot read property 'addEventListener' of undefined" using Ionic2 InAppBrowser
我正在使用 InAppBrowser
from ionic-native
打开系统浏览器 window 并观察要加载的特定回调 URL。这是我的代码片段:
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { InAppBrowser, InAppBrowserEvent } from 'ionic-native';
@Component({/* ... properties ... */})
export class MyPage {
/* ... constructor, etc. ... */
// function triggered by button click on the page
register() {
let url = 'https://example.com/oauth2/authorize?client_id=29D20X';
let browser: InAppBrowser = new InAppBrowser(url, '_system');
browser.on('loadstart').subscribe((ev: InAppBrowserEvent) => { // line 23
if (0 === ev.url.indexOf('http://localhost:8100/callback')) {
console.log(ev.url);
browser.close();
}
});
}
}
一旦 register()
函数被触发,浏览器 window 打开预期的页面,但同时在打开它的页面上,我收到以下错误:
TypeError: Cannot read property 'addEventListener' of undefined
at Observable._subscribe (inappbrowser.js:79)
at Observable.subscribe (Observable.js:56)
at MyPage.register (my-page.ts:23)
堆栈跟踪中还有更多内容,但很明显问题出在 inappbrowser
的 ionic-native
包装器中。
这是一个错误,还是我遗漏了什么?这是我的系统信息,我正在使用 ionic serve
.
在浏览器中对此进行测试
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.5
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
Ionic App Scripts Version: 1.0.0
ios-deploy version: 1.8.2
ios-sim version: 5.0.3
OS: OS X Yosemite
Node Version: v7.0.0
Xcode version: Xcode 7.2.1 Build version 7C1002
谢谢!
想通了!!!
问题出在传递给 new InAppBrowser()
函数的参数中。
这个有效:
let browser = new InAppBrowser(url, '_blank', 'location=yes');
这不有效:
let browser = new InAppBrowser(url, '_system');
我一直在关注 this documentation,经过大量谷歌搜索和阅读关于 inappbrowser 的随机线程后,我终于找到了解决方案。本质上,这两者都会打开浏览器 window。但是,不正确的方法不允许您将事件侦听器附加到任何浏览器事件,例如加载开始。
我正在使用 InAppBrowser
from ionic-native
打开系统浏览器 window 并观察要加载的特定回调 URL。这是我的代码片段:
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { InAppBrowser, InAppBrowserEvent } from 'ionic-native';
@Component({/* ... properties ... */})
export class MyPage {
/* ... constructor, etc. ... */
// function triggered by button click on the page
register() {
let url = 'https://example.com/oauth2/authorize?client_id=29D20X';
let browser: InAppBrowser = new InAppBrowser(url, '_system');
browser.on('loadstart').subscribe((ev: InAppBrowserEvent) => { // line 23
if (0 === ev.url.indexOf('http://localhost:8100/callback')) {
console.log(ev.url);
browser.close();
}
});
}
}
一旦 register()
函数被触发,浏览器 window 打开预期的页面,但同时在打开它的页面上,我收到以下错误:
TypeError: Cannot read property 'addEventListener' of undefined
at Observable._subscribe (inappbrowser.js:79)
at Observable.subscribe (Observable.js:56)
at MyPage.register (my-page.ts:23)
堆栈跟踪中还有更多内容,但很明显问题出在 inappbrowser
的 ionic-native
包装器中。
这是一个错误,还是我遗漏了什么?这是我的系统信息,我正在使用 ionic serve
.
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.5
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
Ionic App Scripts Version: 1.0.0
ios-deploy version: 1.8.2
ios-sim version: 5.0.3
OS: OS X Yosemite
Node Version: v7.0.0
Xcode version: Xcode 7.2.1 Build version 7C1002
谢谢!
想通了!!!
问题出在传递给 new InAppBrowser()
函数的参数中。
这个有效:
let browser = new InAppBrowser(url, '_blank', 'location=yes');
这不有效:
let browser = new InAppBrowser(url, '_system');
我一直在关注 this documentation,经过大量谷歌搜索和阅读关于 inappbrowser 的随机线程后,我终于找到了解决方案。本质上,这两者都会打开浏览器 window。但是,不正确的方法不允许您将事件侦听器附加到任何浏览器事件,例如加载开始。