2011-08-12 4 views
0

です。JavaScriptを使用して画像オブジェクトを生成した後、jQueryを使用して.load関数などの属性を変更しています。 Safari(バージョン5.0.5)のエラーコンソールを見つけようと欲しいと思ったのですが、最終的に見つけにくいのは難しいですが、Safariは閉じられていないimgタグを見つけたときにJavaScriptを終了させました。 HTML5では廃止予定です。不可能ではないにしても、むしろ悪夢のような負荷機能を追加しなければ、関数のimgタグを単純にハードワイヤリングするだけです。何か案は?SafariはHTML5 void要素でクールではありません。 JavaScriptは

function loadImageTitle(imgsrc, element, width, height, title) { 
    var img = new Image(); 
    $(img) 
     .load(function() { 
      $(this).hide(); 
      $(element).replaceWith(this); 
     }) 

     .css({ 'max-width': width, 'max-height': height }) 
     .attr("title", title) 
     .attr("alt", title) 
     .attr("src", imgsrc); 
} 

私はこの最も基本的な部分については、実際に種類の不明でした。問題は、JavaScriptがHTML5で、Safari 5.0.5、FF 4.0.1、IE8、Chrome 13の後ろにスラッシュを付けずにimgを作成することです。オプションです。 Safariはスクリプトに同意せずにスクリプトを終了します。

+3

なぜ画像オブジェクトをjQueryに渡していますか?これは '$(img)'の代わりに '$( '')'ではないでしょうか? – tjameson

+0

Safariのどのバージョンですか? http://jsfiddle.netでこれを再現できますか? – thirtydot

+1

明確にするために、JavaScript ImageオブジェクトにjQueryロードイベントハンドラをアタッチしようとしています。まだDOMに追加されていないもの。私は正しいですか? – rossipedia

答えて

0

あなたのコードが達成しようとしていることは明確ではありません。既存の要素を画像で置き換えようとしているようです。

var img = $("<img/>") 
    .load(function() { $(element).replaceWith(this); }) 
    .attr({ 
    title: title, 
    alt: title, 
    src: imgsrc 
    }) 
    .css({ 
    "max-width": width, 
    "max-height": height 
    }) 

私は画像を隠すために.hide()を使用するつもりでしたが、それはそのままでよいはずです。イメージはドキュメントに追加されていないため、とにかく表示されません。

+0

ありがとう!私はこれを撃つだろう。私もコードを一緒に戻すのを忘れましたが、replaceWithはもともと.replaceWith($(this).fadeIn())だったので、.hide()でした。しかし、この代替セレクタの構文はまさに私が探していたものであるようです。 –

関連する問題