flowplayerとIE9
flowplayerなるものを使って動画を再生しちゃってたわけです。
custom fullscreenを使って、モーダルな、ライトボックスなフルスクリーンを実装してました。
Custom fullscreen action : Flowplayer
そこへ複数の動画を再生させたいって言われたわけ。
複数設置をflash playerを使った、flowplayer(html5じゃないやーつ)でやろうとすると、
うまくいかない。
うまくいかないから、colorboxを使って、
iframeで読み込ませてた。
chromeでOK、firefoxでOK、IEでも、、、あれ?IE9でうまくいかない。
なんで?
flowplayerが悪いのか、custom fullscreenが悪いのか、colorboxが悪いのか、、、
半日以上費やして、見つけたものがコレ。
IEの謎エラー対策(1) 「オブジェクトを指定して下さい」が外部ソースの場合 - 趣味の延長線
オブジェクトを指定してください。
これ。
答えは、簡単な事だった。
DOCTYPE宣言の書き方の違いくらい簡単な事だった。
疲れたよ。
Photoshopで、CSS3を出力してくれるプラグイン。とインブラウザデザインと。
知らなかった!photoshopでcssを書き出してくれる無料のエクステンション「CSS3Ps」 | スターフィールド株式会社
これ、すごいね。
使いたい。
あと、会社の人に、インブラウザデザイン調べといてー。
て、言われた。
なんだそりゃ。
インブラウザデザインのすゝめ | htmlコーディングパートナーの小棹制作所
インブラウザ デザイン | CSS Radar | Little Books For Front End Developers
なんか、コーディングでデザインしちゃおうぜって話しらしい。
それを踏まえて、bootstrapとlessをやっておけ、コノヤローと言われた。
はい。
簡単に実装できたアンカースクロール~jquery版
元々、smooth scrollを採用しているコンテンツで、
タブを切り替えるscriptを使ったら上手く行かなかった。
(※但し、ver1.1のためかもしれないが。)
それを回避するために、簡単なアンカースクロールは無いものかと、
探したら、あった。
Jquery でスムーズなスクロール - クリエイティブ TIPS - Yahoo!ブログ
これがシンプルなスクリプト。
簡単だね。
jQuery Mobileでつまずいたこと。
フォーム(form)などの値をリセットして非表示した時に、
jquery Mobileだと表示上返されていないことがあったので、
その時の対応をメモ。
HTML[
<div id="q1-1">
<p>■色を選んで下さい</p>
<select name="code157">
<option value="">▼お選びください</option>
<option value="1">レッド</option>
<option value="2">ブラック</option>
</select>
</div>
]
JS[
$('#q1-1 select).val("");
]
上記のように書いても、
jquery Mobile上は変わらない。
そこで、
HTML[
<div id="q1-1">
<p>■色を選んで下さい</p>
<select name="code157">
<option value="">▼お選びください</option>
<option value="1">レッド</option>
<option value="2">ブラック</option>
</select>
</div>
]
JS[
$('#q1-1 select).val("");
$('#q1-1 .ui-btn-text').text("▼お選びください");
]
面倒だけども、jquery Mobile時に挿入されるspan.ui-btn-textの値に、
直接リセット時の値を入れてやることで解決した。
次。
一部抜粋ではあるけど、
ラジオボタンやチェックボックスの値がリセットした時に反映されない問題もあった。
これは以下のように解決した。
JS[
//jQuery Mobileはスマホの時だけ実装されるので、スマホだけで実行される命令を
//if文で記述。これが無いと、それが実装されていない時にエラーとなって、止まっちゃう。
if ( (_UA.indexOf('iPhone') > -1 || _UA.indexOf('iPod') > -1) && (document.cookie.indexOf('jet_viewmode=PC') == -1) ) {
$(values).prop("checked", false).checkboxradio("refresh");
}else if (_UA.indexOf('Android') > -1 && document.cookie.indexOf('jet_viewmode=PC') == -1) {
$(values).prop("checked", false).checkboxradio("refresh");
}
//ここから下は値をリセットする共通の命令。
$(values).attr('checked', false);
]
これでjquery Mobileに対応しましたよっと。
ドキュメントモードとIEと互換モード
IE9だけバグが出るって言われたようで、
どうしたらいいか考えたら、互換モード変えちゃえって話になった。
ドキュメントモードをいじってみたらどうだろう?
てことで、以下のサイトを参考にした。
X-UA-Compatibleの指定でIE11をIE10で表示させる|Web制作 W3G
これを引用して、以下のようにした。
<metahttp-equiv="X-UA-Compatible"content="IE=7; IE=8; IE=10; IE=11">
コレでうまくいくのかな?
そして、ドキュメントモードは何かを判断するために、jsを書けるか調べた。
IE8 の描画モードを簡単判定 (Tips) by Bin-Cook
このページを参考に、以下のソースを書いてドキュメントモードを参照した。
alert(document.documentMode);
参照までは出来たみたいだけど、、、
追伸:
特集:Web制作者&開発者のためのIE9概説(前編):Internet Explorer 9正式版レビュー (1/3) - @IT
xampp設定でぶつかったこと。
改めて、xamppを入れようと思った。
元々はzipからフォルダを展開して利用していたのだが、
ずっとフォルダをコピーして使っていたために、
index.phpがどっかいったり、不足したファイルもあったので、
改めてインストールすることにした。
(SDカードのEドライブ上だったし。)
久々にxamppのページ見たら、
bitnamiっていう冠のついた名前になってるし。
パットナムみたいな名前だな。日ハムの。
そんでインストールしたんだが、
日本語で利用してぶつかった問題があった。
それはセキュリティページのナビとメインが文字化けすること。
これ、こちらのページ(http://fu-tara.com/wordpress000230/)で対応したのだけども、
どうもchromeでうまくいかない。
理由を探っていたら、
メモ帳を使っていたのがまずいらしい。
秀丸で保存したら、うまくいって、なんだかなって思った。
iOSでselectedが外れない件
覚書程度に。
必要があって、htmlのselect内で特定のoptionを選んだときに、
アラートを出して、選んだoptionをリセットさせるjavascript(jquery)を書いた。
<script>
jQuery(function(){
jQuery('#foo1').change(function(){
var fo1 = jQuery('#foo1 option:selected').val();
var fo2 = jQuery('#foo2 option:selected').val();
var fo3 = jQuery('#foo3 option:selected').val();
if(!fo1 ==""){
if(fo1 == fo2){
jQuery('#foo1 option:selected').attr("selected",false);
alert(fo2);
}else if(fo1 == fo3){
jQuery('#foo1 option:selected').attr("selected",false);
alert("選択肢がかぶっています");
}
}
});
jQuery('#foo2').change(function(){
var fo1 = jQuery('#foo1 option:selected').val();
var fo2 = jQuery('#foo2 option:selected').val();
var fo3 = jQuery('#foo3 option:selected').val();
if(!fo2 ==""){
if(fo1 == fo2){
jQuery('#foo2 option:selected').attr("selected",false);
alert("選択肢がかぶっています");
}else if(fo2 == fo3){
jQuery('#foo2 option:selected').attr("selected",false);
alert("選択肢がかぶっています");
}
}
});
jQuery('#foo3').change(function(){
var fo1 = jQuery('#foo1 option:selected').val();
var fo2 = jQuery('#foo2 option:selected').val();
var fo3 = jQuery('#foo3 option:selected').val();
if(!fo3 ==""){
if(fo3 == fo2){
jQuery('#foo3 option:selected').attr("selected",false);
alert("選択肢がかぶっています");
}else if(fo1 == fo3){
jQuery('#foo3 option:selected').attr("selected",false);
alert("選択肢がかぶっています");
}
}
});
});
</script>
<select id="foo1">
<option value="">▼お選びください</option>
<option value="a">ぽれぽれぽれ</option>
<option value="b">うかれぽんち</option>
<option value="c">みやわやさん</option>
</select>
<select id="foo2">
<option value="">▼お選びください</option>
<option value="a">ぽれぽれぽれ</option>
<option value="b">うかれぽんち</option>
<option value="c">みやわやさん</option>
</select>
<select id="foo3">
<option value="">▼お選びください</option>
<option value="a">ぽれぽれぽれ</option>
<option value="b">うかれぽんち</option>
<option value="c">みやわやさん</option>
</select>
これ、iOS以外はうまく動く。
$("#foo3 option")val("")としてもだめだった。
で、こうしたらうまくいった。
jQuery('#foo2 option.pon').attr("selected",true);
=>jQuery('#foo2 option:selected').attr("selected",false);
<option class="pon" value="">▼お選びください</option>
=><option value="">▼お選びください</option>
よかったよかった。