
すみません、IE11なってから、以下のjavascriptが動かなくなりました。
画像は、フェードイン、フェードアウトを繰り返し、画像はランダムに移動します。
全部のロジックを書いてしまいましたが、
何処がIE11から変更されたかが解らなくて、困っている所です。
何処を直すのか、全部聞くのもあつかましいと思いました、
どのあたりを見直しすれば宜しいですか。
教えて頂ければ幸いです。
<SCRIPT language="JavaScript">
<!--
var img = new Array();
img[0] = new Image(); img[0].src = "img/4031.jpg";
img[1] = new Image(); img[1].src = "img/4032.jpg";
img[2] = new Image(); img[2].src = "img/4031.jpg";
img[3] = new Image(); img[3].src = "img/4032.jpg";
img[4] = new Image(); img[4].src = "img/4031.jpg";
imgMaxSizeW = 171;
imgMaxSizeH = 141;
alphaTimer = 10;
stopTimer = 2000;
nextImgTimer = 1000;
_dom=(document.all?3:(document.getElementById?1:(document.layers?2:0)));
function getWindowSize() {
if(_dom == 1 || _dom == 2) {
win_width = self.innerWidth;
win_height = self.innerHeight;
}
if (_dom == 3) {
win_width = document.body.clientWidth;
win_height = document.body.clientHeight;
}
}
function showLayer(layerName){
if (_dom == 1) document.getElementById(layerName).style.visibility = "visible";
if (_dom == 2) document.layers[layerName].visibility = "show";
if (_dom == 3) document.all(layerName).style.visibility = "visible";
}
function hideLayer(layerName){
if (_dom == 1) document.getElementById(layerName).style.visibility = "hidden";
if (_dom == 2) document.layers[layerName].visibility = "hide";
if (_dom == 3) document.all(layerName).style.visibility = "hidden";
}
function writeHTML(layerName,html) {
if (_dom == 1) {
var div = document.getElementById(layerName);
while(div.hasChildNodes()) div.removeChild(div.lastChild);
var range=document.createRange();
range.selectNodeContents(div);
range.collapse(true);
var cf=range.createContextualFragment(html);
div.appendChild(cf);
}
if (_dom == 2) {
var div = document.layers[layerName];
div.document.open();
div.document.write(html);
div.document.close();
}
if (_dom == 3) document.all(layerName).innerHTML = html;
}
function moveLayerTo(layerName, x, y){
if (_dom == 1) {
document.getElementById(layerName).style.left = x + scrollX;
document.getElementById(layerName).style.top = y + scrollY;
}
if (_dom == 2) {
document.layers[layerName].left = x + pageXOffset;
document.layers[layerName].top = y + pageYOffset;
}
if (_dom == 3) {
document.all(layerName).style.pixelLeft = x + document.body.scrollLeft
document.all(layerName).style.pixelTop = y + document.body.scrollTop;
}
}
function changeAlpha(layerName) {
if (_dom == 3) {
if (alphaCount < 200) {
alphaCount += 2; op = alphaCount > 100 ? 100 - (alphaCount-100) : alphaCount;
document.all(layerName).filters["alpha"].opacity = op;
if (op == 100) {
tim = setTimeout("changeAlpha('"+layerName+"')", stopTimer);
} else {
tim = setTimeout("changeAlpha('"+layerName+"')", alphaTimer);
}
} else {
hideLayer(layerName);
clearTimeout(tim);
tim = setTimeout("setAlphaImgPos()",nextImgTimer);
}
} else {
setTimeout("setAlphaImgPos()",nextImgTimer*2);
}
}
var imgCount = 0;
function setAlphaImgPos() {
writeHTML("imgLay",'<IMG src="' + img[imgCount].src + '" border="0">');
imgCount++; if (imgCount >= img.length) imgCount = 0;
getWindowSize();
sX = Math.floor(Math.random()*(win_width-imgMaxSizeW-10));
sY = Math.floor(Math.random()*(win_height-imgMaxSizeH-10));
moveLayerTo("imgLay",sX,sY);
showLayer("imgLay");
alphaCount = 0;
changeAlpha("imgLay");
}
window.onload = setAlphaImgPos;
// -->
</SCRIPT>
No.1ベストアンサー
- 回答日時:
他の HTML がわからないので適当に付け加えて開発者ツールで確認してみたのですが、moveLayerTo() の
if (_dom == 1) {
document.getElementById(layerName).style.left = x + scrollX;
document.getElementById(layerName).style.top = y + scrollY;
}
で scrollX は定義されていません と表示されます。というか、F12 を押すと開発者ツールが使えるので何らかの問題が起きたならこれで確認しましょう。
あと、透過度の設定を DX フィルターを使って行っているようですが、それも IE10 から使えなくなっています。
https://msdn.microsoft.com/ja-jp/library/ie/hh80 …
IE10 以降ではかわりに CSS の opacity を使ってください。
https://developer.mozilla.org/ja/docs/Web/CSS/op …
No.2
- 回答日時:
ああ、前回の回答で書き忘れていた、もっと大切なことがありました。
IE11 では document.all が無くなり、そのため IE の判定として使うことはできなくなりました。つまり、最初の方で _dom を設定している個所では、IE11 では 3 ではなく 1 が設定されます。
それ以外にも IE11 では各種の(Web 標準に合わせる方向での)変更が各種行われているので、まずは以下のページをお読みください。
https://msdn.microsoft.com/ja-jp/library/ie/bg18 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでIEのボタンを押してメッセ...
-
マウスでポイントすると説明を表示
-
Boolean型配列中のTrueの有無を...
-
ActiveXobjectが作成できない
-
functionから別のfunctionを実...
-
JavaScriptとHTMLの課題です
-
javascriptで複数キーワード検...
-
<a>タグのテキストを取得
-
idを使わずにonclickで自身の要...
-
HTML:Tableタグに対し、JavaScr...
-
JavaScriptで日付を取得したいです
-
C#OpenCv V4にのエラーに関する...
-
画像上のクリックした場所が分...
-
jQueryの :not() .not() が有効...
-
javascriptでスロットゲームを...
-
【javascript】正規表現で括弧...
-
JavaScriptにおける[] とか :...
-
ジェネレーターの作り方
-
Linux バイナリ実行できない "...
-
html javascript リンク先アド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javascriptのhtml出力についてa...
-
codejump 模写コーディングgall...
-
XMLでのAttributeを持ったNode...
-
JavaScript window.openで開く...
-
Latexに関する質問です。
-
Null またはオブジェクトではあ...
-
window.onloadを複数実行したい...
-
excle VBA とweb上の検索を利用...
-
bxsliderでpagerCustomのクラス...
-
VB2019でウェブサイトにID/PASS...
-
webページ上のTabキーの動き
-
DOM要素を削除しても、イベント...
-
javascriptの基本的なことだと...
-
Javascript ページ読み込んだら...
-
responseTextについて
-
ie操作 フレームのURLが...
-
Javascriptで定期的にF5を押す...
-
IE11 javascriptについて
-
removeEventListenerの必要性
-
LaTeX:数式を等号揃えにする方法
おすすめ情報