Android webview踏み込み記録

1687 ワード

  • webview上が他の要素で覆われている場合は取得できない画面幅は小米、vivo携帯電話(機種は記録されておらず、全機種かどうかは不明)であり、window.innerWidthもzeptoの$(window).width()も取得した画面幅は0である.事のいきさつ:私达の応用シーンの中で、外はAppを引っ張って、Appは冷やして5秒のスタートアップの広告があって、この时本文も同期してレンダリングして、しかし広告は本文の上で覆います.広告終了後の本文の内容は同期でも非同期でも表示できますが、画像はデフォルト図のみ表示されます.非同期イベントが早期にトリガーされたかどうかを確認し(ピクチャロードは非同期イベントであり、クライアントが事前に図をダウンロードしてからネイティブアドレスを渡してくれた)、ローカルピクチャがクリアされたかどうかを確認した後、appをchromeに接続してデバッグしたところ、幅が0に設定されていることがわかりました.この0のソースはMath.min( , )です.(なぜ幅100%を設定しないのですか?これはもう一つの穴にかかわっています.Androidの携帯電話の画面解像度に問題があります.例えば、最大スクリーン幅3600%の幅が720です.彼は2倍のスクリーンですから...いつもこのような奇抜な携帯電話の存在があります).解決策:(1)クライアントはwebView.onResumeを検出してからすべての非同期イベントを実行する(少しの遅延が必要).Webビューがフォーカスを取得したと考えられているためかもしれませんが、実際には完全に切り替えられていません.このときすぐにwindow.innerWidthを呼び出して得られる投げは0になります.もちろん万能の遅延数十ミリ秒を用いてトリガすることができるが,この方法には根本的な治療ができず,放棄するものがあると考えられる.(2)クライアント転送画面幅.それ自体に非同期イベントがある以上、私たち自身が取得できないときは、クライアントを使って転送すればいいです.なお、フロントエンドのpx単位は、クライアントに対応するdpi、すなわち3倍のスクリーンであり、フロントエンド取得スクリーン幅は360 pxであり、クライアントが取得するのは1080 pxであり、対応するdpiは360である.
  • 属性競合JSを使用して動画を動的に設定する場合、互換性を考慮するため、一般的な書き方は以下の通りです.dom.style.cssText += ';transform:translate3D(0,0,0);-webkit-transform:translate3D(0,0,0);';はアンドロイドの一部機種では(既知のvivoがあります)、動的書き込み後は前者のtransform:translate3D(0,0,0)のみが変更され、-webkit-transform:translate3D(0,0,0);は値付けされず、アニメーションエラーが発生します.解決策:アンドロイドが-webkit-の属性
  • しか書いていないと判断した.
  • AndroidダイレクトコールJSメソッドでは、リストを表示し、エンドダイレクトコールJSメソッドを表示し、フロントエンドにデータをレンダリングし、クリックするとフロントエンドにデータを返信(例えばジャンプリンク)する必要がある場合があります.しかし、loadUrlメソッドを使用して直接jsを実行する場合、アンドロイド4.4の後、loadUrlの方式でjsが呼び出され、自動的にdecodeが行われる.