Angular / Ionic с Angularfire: iOS: заблокированная рамка с происхождением "http://localhost:8100" - PullRequest
0 голосов
/ 08 июля 2019

Этот проект Ionic3 (Angular 5) необходимо было обновить со старого AngularFire 3.x до "@ angular / fire": "^ 5.2.1"; После этого обновления происходит странное поведение при запуске приложения в Chrome с использованием «режима устройства», установленного на iPhone / iPad. Не происходит в симуляции Android. В какой-то момент (который я не могу определить) angularfire (я полагаю?), Кажется, добавляет iframe в элемент body:

<iframe ng-non-bindable="" frameborder="0" hspace="0" marginheight="0" marginwidth="0" scrolling="no" tabindex="0" vspace="0" width="100%" 
    id="I0_1562593422051"
    name="I0_1562593422051" 
    src="https://XXXXXXXXX.firebaseapp.com/__/auth/iframe?apiKey=YYYYYYYYYYYYYY&amp;appName=ZZZZZZZZZZZZZZZ&amp;v=6.2.4&amp;usegapi=1&amp;jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en_GB.4xsMIUspm18.O%2Fam%3DwQE%2Fd%3D1%2Frs%3DAGLTcCO_dMVTlnY55ZJNnloXSQJ2GsU_yw%2Fm%3D__features__#id=I0_1562593422051&amp;_gfid=I0_1562593422051&amp;parent=http%3A%2F%2Flocalhost%3A8100&amp;pfname=&amp;rpctoken=33463188" style="position: absolute; top: -100px; width: 1px; height: 1px;"></iframe>

Даже при том, что это прекрасно работает на поддомене firebaseapp.com, локальный хост (который используется в cordova) сталкивается со следующей проблемой только с iOS (не с android, не с chrome) ...

Любые советы приветствуются, это уже второй день, проведенный при устранении неполадок ..! Заранее спасибо.

Какой-то неясный стек предлагает ошибку в core.js: 1449:

core.js:1449 ERROR DOMException: Blocked a frame with origin "http://localhost:8100" from accessing a cross-origin frame.
    at e (<anonymous>:1:62513)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63249)
    at e (<anonymous>:1:63075)
defaultErrorLogger  @   core.js:1449
ErrorHandler.handleError    @   core.js:1510
IonicErrorHandler.handleError   @   ionic-error-handler.js:61
next    @   core.js:5508
schedulerFn @   core.js:4342
SafeSubscriber.__tryOrUnsub @   Subscriber.js:253
SafeSubscriber.next @   Subscriber.js:191
Subscriber._next    @   Subscriber.js:129
Subscriber.next @   Subscriber.js:93
Subject.next    @   Subject.js:53
EventEmitter.emit   @   core.js:4322
(anonymous) @   core.js:4782
t.invoke    @   polyfills.js:3
r.run   @   polyfills.js:3
NgZone.runOutsideAngular    @   core.js:4708
onHandleError   @   core.js:4782
t.handleError   @   polyfills.js:3
r.runTask   @   polyfills.js:3
e.invokeTask    @   polyfills.js:3
i.isUsingGlobalCallback.invoke  @   polyfills.js:3
n   @   polyfills.js:3
setTimeout (async)      
o   @   polyfills.js:3
t.scheduleTask  @   polyfills.js:3
onScheduleTask  @   polyfills.js:3
t.scheduleTask  @   polyfills.js:3
r.scheduleTask  @   polyfills.js:3
r.scheduleMacroTask @   polyfills.js:3
(anonymous) @   polyfills.js:3
o.<computed>    @   polyfills.js:2
hostReportError @   hostReportError.js:8
setTimeout (async)      
o   @   polyfills.js:3
t.scheduleTask  @   polyfills.js:3
r.scheduleTask  @   polyfills.js:3
r.scheduleMacroTask @   polyfills.js:3
(anonymous) @   polyfills.js:3
o.<computed>    @   polyfills.js:2
AsyncObserver.scheduleEvent @   index.cjs.js:18817
AsyncObserver.next  @   index.cjs.js:18806
QueryListener.raiseInitialEvent @   index.cjs.js:16065
QueryListener.onViewSnapshot    @   index.cjs.js:16007
EventManager.onWatchChange  @   index.cjs.js:15944
(anonymous) @   index.cjs.js:16653
step    @   tslib.es6.js:99
(anonymous) @   tslib.es6.js:80
fulfilled   @   tslib.es6.js:70
t.invoke    @   polyfills.js:3
r.run   @   polyfills.js:3
(anonymous) @   polyfills.js:3
t.invokeTask    @   polyfills.js:3
r.runTask   @   polyfills.js:3
o   @   polyfills.js:3
e.invokeTask    @   polyfills.js:3
p   @   polyfills.js:2
v   @   polyfills.js:2

Мои зависимости package.json:

   "dependencies": {
        "@angular/animations": "5.2.11",
        "@angular/cdk": "^5.1.0",
        "@angular/common": "5.2.11",
        "@angular/compiler": "5.2.11",
        "@angular/compiler-cli": "5.2.11",
        "@angular/core": "5.2.11",
        "@angular/fire": "^5.2.1",
        "@angular/flex-layout": "^5.0.0-beta.15",
        "@angular/forms": "5.2.11",
        "@angular/http": "5.2.11",
        "@angular/platform-browser": "5.2.11",
        "@angular/platform-browser-dynamic": "5.2.11",
        "@ionic-native/core": "~4.11.0",
        "@ionic-native/splash-screen": "~4.11.0",
        "@ionic-native/status-bar": "~4.11.0",
        "@ionic/pro": "^2.0.3",
        "@ionic/storage": "^2.2.0",
        "@ngrx/effects": "^5.2.0",
        "@ngrx/store": "^5.2.0",
        "@ngrx/store-devtools": "^5.2.0",
        "@types/cordova": "0.0.34",
        "cordova-android": "^7.1.4",
        "cordova-browser": "^5.0.4",
        "cordova-ios": "^4.5.5",
        "cordova-plugin-device": "^2.0.2",
        "cordova-plugin-file": "^6.0.1",
        "cordova-plugin-file-transfer": "^1.7.1",
        "cordova-plugin-ionic": "^5.3.1",
        "cordova-plugin-ionic-keyboard": "^2.1.3",
        "cordova-plugin-ionic-webview": "^2.5.1",
        "cordova-plugin-splashscreen": "^5.0.2",
        "cordova-plugin-statusbar": "^2.4.2",
        "cordova-plugin-whitelist": "^1.3.3",
        "firebase": "^6.2.4",
        "ionic-angular": "3.9.2",
        "ionic2-auto-complete": "^1.6.2-alpha",
        "ionicons": "3.0.0",
        "ng2-nvd3": "^2.0.0",
        "ngx-perfect-scrollbar": "^5.3.5",
        "rxjs": "6.2.0",
        "rxjs-compat": "6.2.0",
        "sw-toolbox": "3.6.0",
        "zone.js": "0.8.26"
    },

1 Ответ

0 голосов
/ 10 июля 2019

Это связано с Chrome - настольной версией. И W10, и Mac ведут себя одинаково, когда находятся в «режиме устройства», имитируя работу с устройством iOS. Это происходит, когда выполняется 1 или несколько вызовов .stateChange, когда вы хотите отслеживать фильтрованную коллекцию на стороне сервера. Происходит случайно - проверяется в отдельной песочнице. Как и предполагалось, этого не происходит на реальном Safari из iOS. Даже Chrome для iOS ведет себя хорошо, поэтому эту проблему можно считать «связанной с средой разработки».

...