2

Android ICS 4.0.3 / 4にインストールされているAndroidストックブラウザとモバイルChromeで奇妙なこと(バグ?)に遭遇しました(両方をテストしました)。信頼できる情報源から、Android2.3でも同じ問題が発生すると聞いています。

達成したいこと: 最近、apple-touch-icon-precomposedアイコンリンクを追加しました。これを使用して、ホーム画面に保存した場合にモバイルWebサイトをアプリのように見せることができます。また、ブックマークバブルを追加して、モバイルWebサイトを「アプリ」として保存できるようになったことをユーザーに通知しました。もちろん、ホーム画面のアプリのようなブックマークから自分のWebサイトを開いた人にはバブルを表示したくないので、まだハッシュを持っていない人のために、ロード時に特別なハッシュを追加します。そうすれば、彼らが私のWebサイトを保存するときに、ハッシュとともに保存するので、通常のリンクmy.website.com/またはブックマークmy.website.com/#specialhashを介して私のWebサイトを開いたかどうかを確認できます。 。すばらしいライブラリを使用して、このプロセス全体を簡略化しました。https://github.com/okamototk/jqm-mobile-bookmark-bubble

問題: ただし、Androidでは、JSを介してハッシュを変更するたびに、ブラウザー/ OSはapple-touch-iconで事前に作成されたアイコンのリンクを認識せず、通常のfavicon.icoのみを保存します(これは恐ろしく見えますが、すべてアプリのように)。

彼らは私にできることは何ですか?

PS。モバイルChromeでは、適切なapple-touch-icon-precomposedがブックマークライブラリに保存されますが、ホーム画面に保存しようとすると常に保存されません。

4

2 に答える 2

2

これはモバイルChromeの問題です。このバグを参照してください。実験してみると、を使用するapple-touch-iconとブックマークライブラリに保存され、ホーム画面に追加されたときにページ上に小さなアイコンとしてレンダリングされるようですが、を使用してもホーム画面にapple-touch-icon-precomposedはまったくレンダリングされません。ページアイコンに地球儀が表示されます。ストックブラウザからブックマークを追加し、ストックブックマークウィジェットを使用してホーム画面に追加する以外に、現時点でできることは何もありません。これらのアイコンのChromeブックマークとウィジェットは壊れています。

于 2012-09-04T20:57:33.960 に答える
0

このソリューションは、Androidのデフォルトブラウザ用です。

ハッシュを変更した後、Androidのデフォルトブラウザはブックマークリンクについて混乱しているようです。おそらくURLを認識しなくなったためです。ハッシュ変更の直後に、JavaScript(この場合はjQuery)を介してブックマーク画像リンクタグをDOMに挿入すると、問題が修正されることがわかりました。これは、この問題に対処するために使用した回避策です。

// create the bookmark link 
MyObject.prototype.getBookmarkLink = function(imageName)
{
   var html = '';
   if (imageName) {
   html = '<link rel="apple-touch-icon-precomposed" href="' + PathToImages + '/' + imageName + '" />';
   }
   return html; 
};

MyObject.prototype.insertBookmarkImage = function(imageName)
{
   if (imageName) {
     // try to get the link that may already be there
     var existingBookmark = jQuery("link[rel='applfe-touch-icon-precomposed']");
     // if able to find it...
     if (existingBookmark.length) {
        // remove it...
        existingBookmark.remove(); 
        // ... then, put it back 
        jQuery('head').append(existingBookmark);
     } else {
        // we were not able to find it, so add a new one
        jQuery('head').append(this.getBookmarkLink(imageName)); 
     }
   }
};
于 2013-03-16T07:41:25.427 に答える