2011-06-22 23 views
3

iFrameの 'src'属性を設定しようとしています。 FireFoxとInternet Explorerでうまく動作します。しかし、 'src'属性を変更するiPadモバイルサファリのテストでは何もしません。モバイルSafariとiFrameのsrc属性

iFrameのHTMLに「src」属性が設定されています。

<iframe id="iFrame0" style="margin: 0px; overflow: hidden; padding: 0px; height:80px; width:500px" src='.../loading.gif' frameborder="0"></iframe> 

は後で私が

var iFrame0 = YAHOO.util.Dom.get('iFrame0'); 
YAHOO.util.Event.addListener(iFrame0, 'load', function() { alert('test'); }); 
MyWebService.GetDynamicUrl('someparam', function(url) { 
    iFrame0.src = url; 
}); 

は、イベントが発生しませんだけでなく、SRCに変更しようとするいくつかのコードを持っていますが、URLの内容は変更されません。私のテストでは、値iFrame0.srcは新しく渡されたURLに変更されますが、ページの内容は変更されません。

document.getElementById('iFrame0').attribute("src") = '..../newurl.gif'; 

はまだ動作しません:私はYUI、しかし、私のテストでは、潜在的な問題として、私はまた、直接経由のiFrameにアクセスしようとしたことを排除するために使用しています

+0

contentWindow.location = urlまたはsetAttribute( "src"、url)のいずれかを使用して修正を試みましたか? – johnmdonahue

+0

私はsetAttributeを試しました(YUIとDOMの両方)。うまくいきませんでした。私はcontentWindow.locationとcontentWindow.location.hrefを試しました。うまくいきませんでした。 –

+0

私は他のものを試し続けました...ここで述べたように 'name'属性を変更しようとしました。[link](http://sampierson.com/blog/software-development/safari-caches-iframe-src/) 。私も 'window.frames [0] .location = '.... newurl.gif'のように設定しようとしました。まだどちらも役に立たなかった。 –

答えて

3

最後に、私は、動的にIFRAMEを作成し、それを添付して、これを解決しましたDOM。また、id属性とsrc属性にタイムスタンプを追加して、キャッシュが行われていないことを確認しました(本当に必要かどうかはわかりませんが)。

var elIFrame = document.createElement("iframe"); 
var dt = new Date(); 
elIFrame.src = APP_IMAGEPATH + "/loading.gif?dt=" + dt.getTime(); 
elIFrame.id = 'newCard2' + dt.getTime(); 
elIFrame.frameBorder = 0; 
elIFrame.scrolling = "no"; 
elIFrame.style.width = "500px"; 
elIFrame.style.height = "1.8em"; 
YAHOO.util.Dom.insertAfter(elIFrame, this.pre + "cardMask"); 
0

実際に変数iFrame0がiFrame DOMオブジェクトを指していて、同じID(例:DIV)を使用して空のオブジェクトや他の要素を指していないことを確認してください。たぶんあなたは最初のsrcをチェックして期待通りのものかどうかを調べることができます(つまり、 '.../loading.gif')。

すると、次のとフレームにアクセスしてください。その後、

var frameObj = document.frames ? document.frames['iFrame0'] : document.getElementById('iFrame0'), 
    frameWin = frameObj.contentWindow || frameObj; 

とそのSRCを変更しよう:

frameWin.src = '..../newurl.gif'; 
+0

私は非常に私は右のiframe要素があると確信しています。私は私のJavaScriptの上に警告文を配置しています。奇妙なのは、 'alert(iFrame0.src);を実行すると、そこにあるはずのURLが表示されますが、iFrameには表示されません。 –

+0

誰かが 'object'要素への切り替えを検討する価値があるかどうかについて誰かが意見を持っているのだろうかと思います。 –

+0

@Scott私は見る...非常に奇妙な!私はそれが再描画の問題かどうか疑問に思いますか?再描画を強制することができるかどうかを確認するために、iFrameの表示プロパティを切り替えることを試みましたか?また、リクエストが実際に置き換えられたURLに対して行われているかどうかを確認するために、FiddlerまたはCharles経由でiPadをプロキシすると便利でしょうか?がんばろう! – johnmdonahue

関連する問題