Mobile Safari和iFrame src属性

时间:2011-06-22 23:09:48

标签: javascript iframe mobile-safari

我正在尝试为iFrame设置'src'属性。它在FireFox和Internet Explorer上运行良好。但是,在iPad移动游戏测试时,更改'src'属性并没有做任何事情。

我有一个iFrame,它在HTML中设置了'src'属性。

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

后来我有一些代码试图改变src

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

事件不仅不会触发,而且URL的内容也不会改变。在我的测试中,我注意到值iFrame0.src确实更改为新传入的URL,但页面上的内容不会更改。

我正在使用YUI来消除这个作为我测试中的潜在问题,我也尝试通过以下方式直接访问iFrame:

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

仍然无效。

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分: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';
相关问题