つまり、iOSは履歴APIの周りに独自のセキュリティを追加しました。つまり、スクリプトを使用してURLを変更することはできません。Aralの例のように、履歴APIがURL(つまり、クリック)を変更できるのはユーザーアクションのみです。
回避策は、URLにハッシュ(別名フラグメント識別子)を使用することです。
代わりにhistory.pushState
、場所を変更します。
var i = 0;
var locationUpdateInterval = setInterval(function(){
window.location.hash = i;
i++;
}, 1000);
iOSアプリでその場所が変更されたとき、またはアプリの特定のページ/パネルへのパーマリンクがある場合にイベントをキャプチャするには、次のようにします。
// named function on purpose for later
function hashchange() {
var pageId = location.hash.substr(1); // drop the # symbol
// do something with pageId
}
window.onhashchange = hashchange;
// onload - if there's a hash on the url, try to do something with it
if (location.hash) hashchange();
pushState
iOSで/を使用できないのはかなり貧弱ですがpopState
、ユーザーがアクションを開始しない限りフルスクリーンビデオをトリガーできないのと同じセキュリティです。これは、iOSでビデオまたはオーディオコンテンツをダウンロードするのと同じです。スクリプトを作成する場合、ユーザーはそれを開始する必要があります(何らかの方法で)。
Androidについてのメモと同じように、問題は非常に似ているため、これはAndroidの回避策としても機能するはずです。
デスクトップのサポートが必要な場合、ほとんどのブラウザはサポートonhashchange
しますが、ご想像のとおり、IEは遅れをとっています-そのため、その悪い子をポリフィルすることができます(jQueryが必要です...): http: //benalman.com/projects/jquery- hashchange-plugin /
お役に立てば幸いです。