Javascript Mobile Safari和iFrame src属性

Javascript Mobile Safari和iFrame src属性,javascript,iframe,mobile-safari,Javascript,Iframe,Mobile Safari,我正在尝试为iFrame设置'src'属性。它在FireFox和InternetExplorer上运行良好。然而,在iPad mobile safari上测试时,更改“src”属性没有任何作用 我有一个iFrame,它在HTML中设置了'src'属性 <iframe id="iFrame0" style="margin: 0px; overflow: hidden; padding: 0px; height:80px; width:500px" src='.../loading.gif'

我正在尝试为iFrame设置'src'属性。它在FireFox和InternetExplorer上运行良好。然而,在iPad mobile safari上测试时,更改“src”属性没有任何作用

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

<iframe id="iFrame0" style="margin: 0px; overflow: hidden; padding: 0px; height:80px; width:500px" src='.../loading.gif' frameborder="0"></iframe>
不仅不会触发事件,而且URL的内容也不会更改。在我的测试中,我注意到值
iFrame0.src
确实会更改为新传入的URL,但页面上的内容不会更改

但是,我使用YUI来消除测试中的潜在问题,我还尝试通过以下方式直接访问iFrame:

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

仍然不起作用。

您确定变量
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';

最后,我通过动态创建iframe并将其附加到DOM解决了这个问题。我还向id和src属性添加了一个时间戳,以确保没有进行缓存(尽管我不确定这是否真的有必要)


您是否尝试过使用contentWindow.location=url或setAttribute(“src”,url)进行修改?我尝试过setAttribute(YUI和脱离DOM)。没用。我尝试了contentWindow.location和contentWindow.location.href。没用。我一直在尝试其他事情。。。我尝试更改此处提到的“name”属性:。我也尝试过这样设置:
window.frames[0]。location='..newurl.gif'
。这两个都没用。这对我来说真是奇怪。我没有遇到这个问题,我已经定期在mobilesafari上动态地注入和修改了iframe的src。您是否可以发布一个指向代码的链接或提供一个指向JSFIDLE的链接?我对这里发生的事很好奇。你在其他iOS版本上试过了吗。3.2移动safari绝对是有缺陷的。它在iPhone或iOS>3.2上运行吗?我最近刚刚在iOS>4.0的iPhone上进行了测试。在那里也不行。遗憾的是,该网站位于内联网上,因此我无法发布指向它的链接。我将继续插入:)我非常确定我有正确的iframe元素。我一直在我的javascript中放置警告语句。奇怪的是,当我发出
警报时(iFrame0.src)
它给了我应该在那里的url(但没有显示在iFrame中)。我想知道是否有人对切换到
对象
元素是否值得考虑有什么看法。@Scott我明白了。。。很奇怪!我想知道这是否是一个重新起草的问题?您是否尝试过切换iFrame的display属性以查看是否可以强制重画?另外,通过Fiddler或Charles代理iPad,看看是否真的在请求替换的url,这可能会有所帮助?祝你好运
frameWin.src = '..../newurl.gif';
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");