2017-03-11 11 views
3

私は、押す必要があるボタンを含む学校プロジェクトのウェブサイトに取り組んでいます。このボタンを押すと、データベースの子「aantal」の値が取り込まれ、1が加算されます。完了すると、データベースに再アップロードされます。さらに1ページで、その子のライブ番号を見ることができます。問題は、これはiOS 9以降、OSX Yosemite以下では機能していないことです。アンドロイドと窓でうまく動作します。FirebaseDatabase web iOS/OSX

再利用可能コード。

これは単なるボタンです。ボタンを押すと、intに1が追加されます。これは、上記のOSで動作しないので、非常に奇妙です。

<script src="https://www.gstatic.com/firebasejs/3.6.9/firebase.js"></script> 
<script language="JavaScript"> 
     // Initialize Firebase 
     var config = { 
      apiKey: //API KEY, 
      authDomain: //FIRBASE DOMAIN, 
      databaseURL: //DATABASE URL, 
      storageBucket: //STORAGE BUCKET, 
      messagingSenderId: //MESGSENDID 
     }; 
     firebase.initializeApp(config); 
     var number; 
     var database = firebase.database().ref().child('aantal'); 
     function buy() { 
      database.on('value', snap => number = snap.val()); 
      var count = parseInt(number, 10) + 1; 
      database.set(count); 
     } 
    </script> 

このコードは動作しません。テスト用のFirebaseプロジェクトを初期化します。 セキュリティ上の理由から、私は細部を削除しました。

+0

正しく機能しないものはありますか?そして、問題は、iOSのバージョンではなくSafariの特定のバージョンであると思いますか? –

+0

何も動作しません。ブラウザは1を追加せず、データベースの番号を表示しません。サファリバグの回避策はありますか? –

+0

あなたはプライベートブラウジングモードでSafariを使用していませんか? –

答えて

2

編集 Safari(9.1/iOS 9.3以下)は矢印機能をサポートしていません。

database.on('value', snap => number = snap.val());からdatabase.on('value', function(snap) { number = snap.val()});に変更すると問題が解決しました。

まあ、そのコードはどこでも動作しないはずです。

function buy() { 
    database.on('value', snap => number = snap.val()); 
    var count = parseInt(number, 10) + 1; 
    database.set(count); 
} 

Firebaseは非同期で、実際にデータベースから番号をロードするのを待っているわけではありません。

これは動作するはずです。

function buy() { 
    database.on('value', snap => { 
     number = snap.val(); 
     var count = parseInt(number, 10) + 1; 
     database.set(count); 
    }); 
} 

私は、これは実際にあなたが抱えている問題であるか、あなたは自分の例でこれを書いている場合かどうかわかりません。また、値をインクリメントするときは、トランザクションを使用する必要があります。

function buy() { 
    database.transaction(function(value) { 
     if (value) { 
      value++; 
     } 
     return value; 
    }); 
} 
+0

私はこのコードを試しましたが、これはまだサファリでは機能しません。それは私の元のコードのようなクロムのthoで行います.. –

+0

これはどうやってテストしていますか?実際のデバイスでは? iOS 8.4シミュレータでうまく動作しています。 –

+0

はいmacbookでこのコードをテストしました。safariのOSX el capitan –

関連する問題