编程语言
首页 > 编程语言> > javascript-移动Safari和iFrame src属性

javascript-移动Safari和iFrame src属性

作者:互联网

我正在尝试为iFrame设置’src’属性.它在FireFox和Internet Explorer上运行良好.但是,在iPad移动浏览器上进行测试时,更改’src’属性不会执行任何操作.

我有一个在HTML中设置了’src’属性的iFrame.

<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';

仍然不起作用.

解决方法:

最后,我通过动态创建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");

标签:mobile-safari,iframe,javascript
来源: https://codeday.me/bug/20191208/2090056.html