• ベストアンサー

○○.srcだとNetscapeで取得できない

JavaScriptで画像のプリロードをさせています。 ソースは以下の通りです。 window.onload = function() { for( i = 0 ; i <= 8 ; i++ ){ img[i] = new Image(); img[i].src = (略); } } (略)とした部分では、ファイルアドレスを動的に作成しています。今のところNetscape以外のブラウザではうまく動作していますが、Netscapeではその後の処理が遅く、プリロードが出来ていないんじゃないのかと思って調べてみるとその通りでした。 問題点は、「変数名.src」となっているとその値を取得できていないということでした。例えば上のソースですと、「img[i].src」では値を取得できませんが「img[i]」であれば取得できていました。しかし後者ですとプリロードが出来ないため、従来どおり前者を使わなくてはいけないようです。「変数名.src」の値をNetscapeで取得するにはどのようにしたら良いのでしょうか? 例: hensuu = "変数"; alert(hensuu); //"変数"がアラートで出力される。 hensuu.src = "変数"; alert(hensuu.src);//アラートが出ない。

質問者が選んだベストアンサー

  • ベストアンサー
  • MAN_MA_RUI
  • ベストアンサー率41% (426/1024)
回答No.1

多分原因は未対応によるものです。Netscape公式日本語版は2004年にリリースされた製品であるため、リリース後に登場した新規格は利用できないようになっています。 Netscapeというのはセキュリティ的な面から行けばあまり利用が望ましくない割にはユーザー数が多いというのが困ったところですね。 Netscapeのバグに対処すると結構制約が掛かりますが、対処しないのであれば何らかの告知などを出したほうが無難。 (例:サポートの終了したブラウザの動作確認は原則行っておりません。Netscapeユーザーなどの方はFirefoxやSeaMonkeyに移行してください、など…) CSSやJavaScriptはブラウザのバージョンによって対応未対応分かれますからある程度のところで切り捨てざるを得ない部分があると思います。 Netscape用の互換用スクリプトを別に用意する(変数名.srcの未対応環境に対して実行させる)か諦めるか当たりが無難じゃないかな…。

その他の回答 (1)

noname#30818
noname#30818
回答No.2

バージョンは何ですか? Netscape7.1で hensuu = new Image() a='' for(var i in hensuu){ a+=i+'='+hensuu[i]+'<br>' } document.body.innerHTML=a を実行すると下のように出ますけど。 src= nodeName=IMG nodeValue=null nodeType=1 parentNode=null childNodes=[object NodeList] firstChild=null lastChild=null previousSibling=null nextSibling=null attributes=[object NamedNodeMap] ownerDocument=[object HTMLDocument] insertBefore= function insertBefore() { [native code] } replaceChild= function replaceChild() { [native code] } removeChild= function removeChild() { [native code] } appendChild= function appendChild() { [native code] } hasChildNodes= function hasChildNodes() { [native code] } cloneNode= function cloneNode() { [native code] } normalize= function normalize() { [native code] } isSupported= function isSupported() { [native code] } namespaceURI=null prefix=null localName=IMG hasAttributes= function hasAttributes() { [native code] } tagName=IMG getAttribute= function getAttribute() { [native code] } setAttribute= function setAttribute() { [native code] } removeAttribute= function removeAttribute() { [native code] } getAttributeNode= function getAttributeNode() { [native code] } setAttributeNode= function setAttributeNode() { [native code] } removeAttributeNode= function removeAttributeNode() { [native code] } getElementsByTagName= function getElementsByTagName() { [native code] } getAttributeNS= function getAttributeNS() { [native code] } setAttributeNS= function setAttributeNS() { [native code] } removeAttributeNS= function removeAttributeNS() { [native code] } getAttributeNodeNS= function getAttributeNodeNS() { [native code] } setAttributeNodeNS= function setAttributeNodeNS() { [native code] } getElementsByTagNameNS= function getElementsByTagNameNS() { [native code] } hasAttribute= function hasAttribute() { [native code] } hasAttributeNS= function hasAttributeNS() { [native code] } id= title= lang= dir= className= name= align= alt= border= height=0 hspace=-1 isMap=false longDesc= useMap= vspace=-1 width=0 ELEMENT_NODE=1 ATTRIBUTE_NODE=2 TEXT_NODE=3 CDATA_SECTION_NODE=4 ENTITY_REFERENCE_NODE=5 ENTITY_NODE=6 PROCESSING_INSTRUCTION_NODE=7 COMMENT_NODE=8 DOCUMENT_NODE=9 DOCUMENT_TYPE_NODE=10 DOCUMENT_FRAGMENT_NODE=11 NOTATION_NODE=12 DOCUMENT_POSITION_DISCONNECTED=32 DOCUMENT_POSITION_PRECEDING=1 DOCUMENT_POSITION_FOLLOWING=2 DOCUMENT_POSITION_CONTAINS=4 DOCUMENT_POSITION_IS_CONTAINED=8 DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC=16 lowsrc= complete=true naturalHeight=0 naturalWidth=0 x=0 y=0 offsetTop=0 offsetLeft=0 offsetWidth=0 offsetHeight=0 offsetParent=null innerHTML= scrollTop=0 scrollLeft=0 scrollHeight=0 scrollWidth=0 clientHeight=0 clientWidth=0 style=[object CSSStyleDeclaration] addEventListener= function addEventListener() { [native code] } removeEventListener= function removeEventListener() { [native code] } dispatchEvent= function dispatchEvent() { [native code] } baseURI= compareDocumentPosition= function compareDocumentPosition() { [native code] } isSameNode= function isSameNode() { [native code] } lookupNamespacePrefix= function lookupNamespacePrefix() { [native code] } lookupNamespaceURI= function lookupNamespaceURI() { [native code] }

関連するQ&A

  • Netscape6でフレーム間での画像の変更

    あるページから別フレームの画像を切り替えるスクリプトを作成していて困っています フレーム1側ソース ... function _sendData(num){  window.top.frames[1]._imgChange(n); } ... <body onLoad="_sendData(n)"> ... フレーム2側ソース ... for (i=0;i<2;i++){img[i]=new Image();} img[0].src = "images/abc.jpg"; img[1].src = "images/def.jpg"; function _imgChange(num) {  nam = "imgname";  document.images[nam].src = img[num].src; } ... <img src="xyz.jpg" name="imgname"> ... 上記ソースのように作成しましたが IE5.5とネスケ4.75で正常に動作するのですが、Netscape6だけうまく動作しません 解決方法その他アドバイスお願いします

  • <img src=http://にしたい

    PHPでWebページのソースを取得して そのソースの中の<img>タグの src属性がもしhttp://で始まらなかった場合 取得したURLをsrc属性に加える方法はないでしょうか? 例 URL=http://www.○○.com ソース <img src="/image/01.jpg"> ↓ <img src="http://www.○○.com/image/01.jpg"> に変更したいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 外部の複数画像を読み込みたい

    外部にある連番の画像を1個1個取得してHTML上に生成したいと思ってます。 画像の数は決まっていないのでfor文を使用します。 onloadを使用しないと、 画像の高さなどが取得できないのでやもなく使用していますが、 でもonloadを使用すると一度しか実行できないので1個目の画像しか高さが取得できません。 なにかよい方法があればご教授頂きたいです。 ▼下記ソース //onload使用した場合 for (var i = 0; i < 10; i++) { img=new Image(); img.src = 'hoge'+[i]+'.jpg'; img.onload = function() { console.log(img.height); } } ↑の結果 = 1個目の画像のみ高さが取れます //onload使用しない場合 for (var i = 0; i < 10; i++) { img=new Image(); img.src = 'hoge'+[i]+'.jpg'; console.log(img.height); } ↑の結果 = 初回は取得できず。リロードすると高さが取得できます。

  • JavaScriptで変更した属性の元の値の取得

    いつもお世話になっております。 ページの画像をとある条件で変更しようとしております。 HTML5のdata-を利用して変更後の画像のパスをimg要素内に持たせております。 JavaScriptでimg要素を取得し画像の変更は実現できております。 その後もとの画像に戻したいのですが、JavaScriptでimg要素を取得してもsrc属性が変更後の値になっており変更前の値が取得できません。 変更前の値の取得方法を教えてください。 ■HTMLソースの一部 <p><img src="img/moto.gif" alt="" data-mimage="img/ato.gif"></p> ■JavaScriptの一部 function wid(){ var image=document.getElementsByTagName('img'); if(window.innerWidth>=320){ for(var i=0;i<image.length;i++){ image.item(i).src=image.item(i).getAttribute("data-mimage"); } }else{ // ここに元の画像に戻すためのスクリプトを書きたい } } } wid関数を作ってそのなかでimg要素を取得し、条件を満たしたらすべてのimg要素のdata-mimageの属性値を元のsrc属性に上書きします。 次に条件が満たされていない場合はHTMLにもともと書いてあったsrc属性の属性値をsrc属性値に戻したいのですがこの値が取得できません。 img/moto.gifをimg/ato.gifに変更することは出来ます。 img/ato.gifに変更した後img/moto.gifに戻すことが出来ません。 もちろんdata-mimage2="img/moto.gif"を追加すれば可能なのは分かっていますが、現状のHTMLを変更することなく実現したいです。 よろしくお願いします。

  • srcの使用方法について

    var array:Array = new Array(); for (var i = 0; i<images.length; i++) { array.push({src:images[i].firstChild.nodeValue}); } mcLoader.loadClip(array[i].src, thisMC); srcの使用方法について,どのような意味なんでしょうか? 構文などを調べてみても掲載させていませんでした. array[i].srcでは,配列に格納された名前を取ってきているようですが,いまいち理解できません.配列以外の変数では変数の値の名前をsrcを利用して参照することは可能なのでしょうか?

    • ベストアンサー
    • Flash
  • NETSCAPEで表示がうまくいかない

    折りたたみメニューのようなのを作成してます。 IEだと問題なく動くのですが、 NETSCAPEになると、マウスオーバー・オフで ロールオーバーの画像が変わらなかったり 表示が消えるはずの箇所が残ったりします。 NETSCAPEでも、ちゃんと動く用にしたいです。 どなたかご助言を頂けないでしょうか? ソースの中を抜粋しました <A href ="BOOK.html" onMouseOver="On('img10');" onMouseOut="Off('img10');"> <IMG src ="10-1.png" border="0" NAME = "img10" alt = ""> </A></DIV> <DIV class="Lmenu_Rmenu"> <A href ="CD.html" onMouseOver="On('img11');" onMouseOut="Off('img11');"> <IMG src ="11-1.png" border="0" NAME = "img11" alt = ""> </A></DIV> <DIV class="Lmenu_Rmenu"> <A href ="DVD.html" onMouseOver="On('img12');" onMouseOut="Off('img12');"> <IMG src ="12-1.png" border="0" NAME = "img12" alt = ""> </A></DIV> </DIV></div> <SCRIPT type="text/javascript" src="java.js"></SCRIPT> var img1on = new Image(); var img1off = new Image();  ・  ・ var img12on = new Image(); var img12off = new Image(); img1off.src = "1-1.png"; // 普段の画像 img1on.src = "1-2.png"; // ポイント時の画像  ・  ・ img12off.src = "12-1.png"; img12on.src = "12-2.png"; // ポイント時の処理 function On(name) { if (document.images) { document.images[name].src = eval(name + 'on.src'); } } // 放した時の処理 function Off(name) { if (document.images) { document.images[name].src = eval(name + 'off.src'); } }

  • 多次元配列のkeyをカウントUPしながら取得したい

    お世話になります。 for文をその分記述すれば、得たい値は取得できるのですが、スマートではない為、多次元配列のkeyをカウントアップしながら取得できれば・・・と、ハマってます。 どのように記述すれば可能でしょうか。 callback({ "IMG" : [ { "src" : { "url1" : "http://domain.com/", "url2" : "http://domain.com/", "url3" : "http://domain.com/" } }, { "src" : { "url1" : "http://domain.com/", "url2" : "http://domain.com/", "url3" : "http://domain.com/" } }, { "src" : { "url1" : "http://domain.com/", "url2" : "http://domain.com/", "url3" : "http://domain.com/" } } ] } ); $(function(){ $.ajax({ type: 'GET', url: './jsonp.js?callback=?', dataType: 'jsonp', jsonpCallback: 'callback', success: function(data){ str = $('<ul id="tiles"></ul>'); /*下記のやり方で取得可能ですが、物凄く冗長な為、簡素に記述したいのです for (var i in data.IMG) { var imgsrc = data.IMG[i].src.url1; alert( "imgsrc="+imgsrc ); } for (var i in data.IMG) { var imgsrc = data.IMG[i].src.url2; alert( "imgsrc="+imgsrc ); } for (var i in data.IMG) { var imgsrc = data.IMG[i].src.url3; alert( "imgsrc="+imgsrc ); } */ var ary=new Array(1,2,3); for(n in ary) { for (var i in data.IMG) { var url = 'url'+n; var imgsrc = data.IMG[i].src.url; alert( "url="+url ); } } }); }); どなた様かご教授戴けますようお願い致します。

  • 複数のテキストボックスの値の取得について

    複数のテキストボックスの値、取得に関して質問させて下さい。 画面に20個のテキストボックスが存在し、 それぞれ id に txt0 ~ txt19を設定しています。 (javascriptにてループで作ってます) for(ii=0; ii<20; ii++){ (略) document.write("<input id='txt" + ii + "' type='text' />"); (略) } 登録ボタン押下後に、上記20個のテキストボックスの値を取得し、 特定の文字だった場合のみ処理を行います。 この処理もループで行いたいのですが、 変数名 txt'i'.value  の 'i'の部分だけを変更したいのです。(iは 0~19) 変数名の一部を変数にすることは可能でしょうか? 配列にできれば話は簡単なのですが・・・配列にできるでしょうか? with (document.form1) { for(ii=0; ii<20; ii++){ (略) tempTxt = txt0.value; ←右辺の値をiiの値と共に txt0.value から txt19.value に変化させたい。 (略)            ("txt" + ii + ".value" では文字列になってしまい・・) if(tempTxt == "ABC"){ (略) } } } 別の手段でもかまわないのですが、何かよい方法が ありましたら、ご回答お願いします。

  • 指定したフォルダの画像を一括でプリロードしたい

    ページが表示されたときに、指定した画像をプリロードするようjavascriptで実装しています。 preloadの引数に1つ1つプリロードしたいファイルを書いていかないといけないので ファイル数が多くなると手間です。 例えば img/photo1.jpg img/photo2.jpg img/thumb.jpg image/photo1.jpg image/photo2.jpg image/thumb.jpg という具合にimgとimageのフォルダがあってimgにだけある画像ファイル全てを一括でプリロード したいです。どのようなソースをかけばいいでしょうか? また、指定したフォルダ以下の画像ファイルを一括でプリロードする関数などがあるのでしょうか? function preload(imgs){   for(var i = 0; i < imgs.length; i++){    var imgObj = new Image();    imgObj.src = imgs[i];    } } preload(["./img/photo1.jpg", "./img/photo2.jpg", "./img/photo3.jpg"]);

  • タグの抽出

    $body = "こんにちわ<img>1</img>今日はいいお天気ですね<img>2</img>あしたのお天気は<img>2</img>晴れです。<img>3</img>"; このようなタグが書かれたものが変数にセットされているのですが、この変数の値の<img>*</img>を こんにちわ<img src=1>今日はいいお天気ですね<img src=2>あしたのお天気は<img src=2>晴れです。<img src=3> と置換したいのですが、色々試したのですが、うまいこといきません。 どうしたらよいものなのでしょうか? (<img>key(/img>なので、keyを元に画像のパスを取得するロジックは別にありますので、今回はsrc=keyとしています。)

    • ベストアンサー
    • PHP

専門家に質問してみよう