【问题标题】:Iframe created dynamically not loading动态创建的 iframe 未加载
【发布时间】:2013-12-12 23:11:44
【问题描述】:

我正在创建一个 iframe,当我将它添加到 dom 时,它不会加载 url。我实际上必须右键单击它并点击刷新...有什么原因会发生这种情况吗?我在 Lync 的 CWE 扩展上使用此代码,该扩展在嵌入式浏览器上运行,但实际上是 IE7。

这是代码:(网址很好,因为点击刷新会加载正确的页面,所以我没有包含获取网址)

var iframe = document.createElement('iframe');
iframe.id = "myframe";
iframe.height = "400";
iframe.width = "700";
iframe.style.border = "0";
iframe.scrolling = "no";
iframe.frameBorder = "0";
iframe.style.display = "block";
iframe.setAttribute("src", this.GetUrl(x));

main.appendChild(iframe);

【问题讨论】:

  • this.GetUrl(x) 返回什么?
  • @rishta 该答案与此问题无关。如果我点击右键并刷新,则可以加载 iframe。
  • @MrSlayer 就像我在上面写的那样,该方法返回一个 url。该网址是有效的,可以用作 iframe..这就是我没有发布该方法的原因

标签: javascript html iframe append


【解决方案1】:

试试:

frame.src = this.GetUrl(x);

代替:

iframe.setAttribute("src", this.GetUrl(x));

frame.src属性,而iframe.setAttribute("src", this.GetUrl(x)); 设置属性

为避免旧浏览器出现不一致和问题,请先尝试 appendChild,以便 DOM 在设置 src 之前知道它的存在。

    var iframe = document.createElement('iframe');
    iframe.id = "myframe";
    iframe.height = "400";
    iframe.width = "700";
    iframe.style.border = "0";
    iframe.scrolling = "no";
    iframe.frameBorder = "0";
    iframe.style.display = "block";
  //  iframe.setAttribute("src", this.GetUrl(x));

    main.appendChild(iframe);
    frame.src = this.GetUrl(x);

【讨论】:

  • 它仍然发生同样的问题,我已经清除了缓存只是为了确定:)
  • @nhenrique:试试frame.document.location.href = this.GetUrl(x)
  • 我试过那个,但它仍在发生。我注意到了一些事情..如果我在附加 iframe 后发出警报,这会按预期第一次加载..没有警报,iframe 不会自动加载。有什么东西打断了 iframe 的加载过程?以前从未遇到过这样的问题
  • 尝试使用 display CSS 属性。附加“显示:无”,然后设置为默认值(阻止?)。
  • @nhenrique:这很奇怪,如果你先appendChild 然后设置src 会怎样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 2011-02-16
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多