10年近く前になりますが個人の趣味HPを作っていてサムネイル画像に触るとifame内に画像とそのコメントが変わる仕組みにしていたのですが久しぶりに見るとIEやedgeでは問題なく動くのですがchromeでは動かなくなっておりました。原因がわからない為、有識者の方からアドバイスをいただければと思います。
HPは恥ずかしいので余分なところを省いたソースを下記に掲載します。
chromeで動くようにするにはどこを変えればよいのでしょうか?
「window.parent.photo.window.document.images」の書き方が違ってくるのでしょうか?
<SCRIPT LANGUAGE="JavaScript">
<!--
if(navigator.appVersion.charAt(0)>=3)
{
movimg=new Array()
movimg[00] = new Image();movimg[00].src="b_pic/b_pic00.jpg";
movimg[01] = new Image();movimg[01].src="b_pic/b_pic01.jpg";
movimg[02] = new Image();movimg[02].src="b_pic/b_pic02.jpg";
};
var dum = "";
function changImg1(imgNoA,imgNoB)
{
if(navigator.appVersion.charAt(0)>=3){
//読込中の場合
if (!movimg[imgNoB].complete) {
if (window.parent.photo.window.document.images[imgNoA].src!= dum ) {
window.parent.photo.window.document.images[imgNoA].src=dummy.src;
dum = window.parent.photo.window.document.images[imgNoA].src;
}
}else{
window.parent.photo.window.document.images[imgNoA].src=movimg[imgNoB].src;
}
}
};
<!---->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
var dummy= new Image();
dummy.src="../../img/dummy.jpg";
<!---->
</SCRIPT>
<body>
<div align="center">
<form name="e0" method="post" action="">
<a href="javascript:function voi(){};voi()" onMouseOver="changImg1(0,00);document.forms[0].e0.value='タイトル1\n 文章1'">
<img src="s_pic/s_pic00.jpg" width="100" height="75" border="0"></a>
<a href="javascript:function voi(){};voi()" onMouseOver="changImg1(0,01);document.forms[0].e0.value='タイトル2\n 文章2'">
<img src="s_pic/s_pic01.jpg" width="100" height="75" border="0"></a>
<a href="javascript:function voi(){};voi()" onMouseOver="changImg1(0,02);document.forms[0].e0.value='タイトル2\n 文章3'">
<img src="s_pic/s_pic02.jpg" width="100" height="75" border="0"></a>
<iframe name=photo src="b_pic/b_pic38.jpg" width="500" height="375" frameborder="0" marginheight="0"></iframe>
<form name="e0" method="post" action="" leftmargin="0" topmargin="0" marginwidth="0" bottmmargin="0">
<textarea name="e0" cols="68" rows="5">画像集</textarea>
</form>
</form>
</div>
No.5ベストアンサー
- 回答日時:
こんにちは
すでに解決しているのかも知れませんが・・・
>サムネイル画像に触るとifame内に画像とそのコメントが変わる仕組み
ざっと眺めましたが、なぜiframeにしてあるのかが不明です。
単に画像を表示しているだけなので、わざわざ別ドキュメントにする意図がわかりません。
>10年近く前に
・・・とのことなので
>navigator.appVersion.charAt(0)>=3
が、何をチェックしているのか(今となっては)わからないでしょうし、現状では、(多分)このチェックはほとんど意味をなしていないのではないかと想像します。
(エージェントに関係なく、appVersionだけを調べているという意味も不明です)
何となくの勝手な想像で、『iframeを用いない同様の仕組み』を作成してみました。
HTMLもスクリプトも、多少はすっきりしたのではと思います。
(Fx64、Chrome71、IE11にて動作確認済)
(ただし、「画像の先読みチェック」はひとまず省略しています。)
そのままコピペの上、画像のアドレスを調整して試してみてください。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
#wrap { display:flex; flex-direction:column; }
#wrap>div { text-align:center; }
#thumbnail { display:flex; justify-content:center; }
#thumbnail img { width:100px; height:75px; margin:6px 3px; cursor:pointer; }
.largeImage { display:inline-block; width:500px; height:375px; }
.largeImage img { width:100%; }
</style>
<script type="text/javascript">
document.addEventListener("mouseover", function(e){
let t = e.target;
if(t.nodeName != "IMG" || t.parentNode.id != "thumbnail") return;
let txt = t.dataset.text.replace("\\n","\n");
document.querySelector(".largeImage img").src = t.dataset.src;
document.querySelector("#wrap textarea[name='e0']").value = txt;
}, false);
</script>
</head>
<body>
<div id="wrap">
<div id="thumbnail">
<img src="s_pic/s_pic00.jpg" data-src="b_pic/b_pic00.jpg" data-text="タイトル1\n 文章1" />
<img src="s_pic/s_pic01.jpg" data-src="b_pic/b_pic01.jpg" data-text="タイトル2\n 文章 2" />
<img src="s_pic/s_pic03.jpg" data-src="b_pic/b_pic02.jpg" data-text="タイトル3\n 文章 3" />
</div>
<div>
<span class="largeImage"><img src="../../img/dummy.jpg" /></span>
</div>
<div><textarea name="e0" cols="68" rows="5">画像集</textarea></div>
</div>
</body>
</html>
No.4
- 回答日時:
あー、ちょっと勘違いだったかも
1ファイルで自分自身に画像があるのですね
そうなると
window.parent.photo.window.document.images
が
photo.document.images
的な書き方になるのような気がします
No.2
- 回答日時:
親ページがこんなふうなら行けるのでは?
<iframe src="hoge.htm"></iframe>
<iframe src="fuga.htm" name="photo"></iframe>
この上でhoge.htmに例示のhtmlを
fuga.htmに以下を指定して下さい
<img src="">
No.1
- 回答日時:
chromeはアップデート更新しています。
(便利なキャッシュも古いと使えないかも)「キャッシュのクリア」を実行してみるのは?
chromeの拡張機能があります。「Clear Cache」chromeの拡張機能
ボタン一つで簡単にキャッシュがクリアできる拡張機能をダウンロード
「Clear Cache」:自己責任
https://incloop.com/%E3%83%9B%E3%83%BC%E3%83%A0% …
JavaScriptは見ていません。(私のHPは「自動」で作成したもの)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
読み込んだQRコードをフォーム...
-
二次元配列を使って順位をだす...
-
プルダウンから1個選んで、豆知...
-
GASでGoogleフォームの自動返信...
-
二次元配列の中の各行の要素を...
-
初心者です。gulpでコンパイル...
-
1度きりではなく、繰り返し、挙...
-
追加ボタンを押した際に ok ボ...
-
HTMLでサブフレームから親のス...
-
ジャバスクリプトについて。
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
iOSのみダブルタップが必要
-
jsで質問です。 displayプロパ...
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
-
Googleフォームで選択肢に応じ...
-
変数名をどのようにつけるのが...
-
ボタンを押したあとに画像を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryで同じクラス名のものを...
-
Javascript初心者|jQueryの.va...
-
デフォルト非表示にしたい。【t...
-
jQueryでのドラッグアンドドロ...
-
複数bxsliderをタブで切り替え...
-
画像の表示位置
-
JavaScriptでの画像切り替えを...
-
Colorboxがうまく設置できません
-
clear機能を失わずにファイルア...
-
embed要素のsrc属性の値を変更...
-
JQueryでオープニングアニメー...
-
全部のサイコロをjavascriptで...
-
一定時間で入れ替わるバナー画...
-
JQueryで画像の上で文字を動かす
-
スクリプト
-
画像拡大とともにエレメントも...
-
JavaScript スクロール制御
-
アップロードファイルの種類に...
-
サムネイルにカーソルを合わせ...
-
htmlの中のhtmlをタブで切り替え
おすすめ情報
キャッシュでは無さそうですね。他のマシン含めて動かないので・・・
申し訳ございませんがよくわからないです。
下記を記載するHTMLファイルを別途用意するということでしょうか?
<iframe src="hoge.htm"></iframe>
<iframe src="fuga.htm" name="photo"></iframe>
うまくいきませんでした。
元のソースはiframe内の画像を置き換えるだけの作りなのでhtmlは1つだけです。
それを親を含めて3つに分解するということでしょうか?
「fuga.htmに以下を指定して下さい <img src="">」というのも意味が分からなかったです。
それで書いても変わらないです。
アラート入れながら余計なタグを削除して確認したところ
下記のソースだとアラート1は出ますが2が出ませんでした。
クローム以外は出ます・・・
alert(1)
photo.document.images[imgNoA].src=movimg[imgNoB].src;
alert(2)