0

クライアントは、この機能が利用できるブラウザ、つまり基本的にIEのみで、自分のページをホームページとして設定するためのリンクを表示したいと考えています(1999年のことです)。

適切で将来を見据えた方法でやりたかったので、ページが読み込まれると実行されるこの関数を思いつきました。たとえば、IE11またはIE12がサポートを停止した場合、私のコードは問題なく機能するという考え方です。

function detectSetHomePage() {
    document.body.style.behavior="url(#default#homepage)";

    if (typeof document.body.setHomePage !== "undefined") {
        $(".makeHomepage").removeClass("hidden");
        $(".makeHomepage").on("click", function() {
            document.body.setHomePage(location.href);
        });
    }
}

リンクは、10を含むすべてのIEで期待どおりに表示され、他のすべてのブラウザーでは表示されません。

唯一の問題はMetroIE10です。「ホームページを作る」リンクはこちらですが、動作しません。クリックしても何も起こりません。

では、Metro IE10でリンクが消えるように「if」ステートメントを変更するにはどうすればよいですか?

4

1 に答える 1

0

デスクトップビューとメトロビューの両方、およびIE9でIE10を使用すると非常に奇妙な結果が得られます。

動作を設定する前に:

>> document.body.setHomePage
   undefined
>> typeof document.body.setHomePage
   "undefined"

次に、最初に動作を追加する場合は異なります。

>> document.body.style.behavior="url(#default#homepage)"
   "url(#default#homepage)" 
>> document.body.setHomePage
   undefined
>> typeof document.body.setHomePage
   "unknown"

特徴検出のためのこの方法論には明らかに問題があります。ページをホームページにする方法や、IE9の下でターゲットにする別の方法をユーザーに示すページを用意することをお勧めします。

編集

私はもう少し検索を行いましたが、MetroとDesktopの間にそれらを区別するのに十分な違いがないようです。私が与えることができる最善の推奨事項は、ユーザーがホームページにするための手順を含むページにリンクするか、ActiveXをターゲットにすることです。

MetroはActiveXを許可しないため、常に除外されますが、手動で無効にされているデスクトップバージョンも除外されます。少なくとも、壊れた機能がクライアントに表示されることはありません。

于 2012-10-09T01:30:48.370 に答える