Flash 要素をフルサイズで表示するページを作成しようとしていますが、小さい画面でサイトを表示すると、フォールバックをトリガーしたいと考えています。
ブラウザがフラッシュをサポートしているため、これは今のところ機能しません。
フォールバックを手動で切り替える方法が見つかりません。
フォールバックを手動でトリガーすることはできませんが、特定の基準が満たされない場合に SWF が読み込まれないようにすることができます。あなたの場合、ビューポートが指定された最小サイズを満たしている場合にのみ、SWF を埋め込む必要があると言いました。
最初のページ読み込み時に SWF を読み込もうとしている場合は、次のようにします。
//Viewport function based on
//http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/
function GetViewportDimensions(){
var de = document.documentElement,
b = document.getElementsByTagName('body')[0],
w = window.innerWidth || (de && de.clientWidth) ? de.clientWidth : b.clientWidth,
h = window.innerHeight || (de && de.clientHeight) ? de.clientHeight : b.clientHeight;
return { width: w, height: h };
}
swfobject.addDomLoadEvent(function(){
var actualDimensions = GetViewportDimensions(),
minimumWidth = 600,
minimumHeight = 500;
if(actualDimensions.width >= minimumWidth && actualDimensions.height >= minimumHeight){
swfobject.embedSWF("mymovie.swf", "flashcontent", "550", "400", "9");
} else {
//do nothing, use fallback
}
});
このコードは、ビューポートが十分に大きい場合にのみ SWF の埋め込みを試みます。Flash が存在しない場合、swfobject.embedSWF
は失敗し、フォールバック コンテンツはそのまま残ります。
テスト目的のみの場合は、次の行にコメントできます。
swfobject.embedSWF("main.swf?v=1", "flashcontent", "972", "1200", "10.1", "expressInstall.swf");
2つのスラッシュを使用する
// swfobject.embedSWF("main.swf?v=1", "flashcontent", "972", "1200", "10.1", "expressInstall.swf");
アップデート:
if (swfobject.getQueryParamValue("noflash") != "true")
swfobject.embedSWF("main.swf?v=1", "flashcontent", "972", "1200", "10.1", "expressInstall.swf");
次に、新しいURLを使用してテストできます。
www.yourwebsite.com/?noflash=true