“对方法或属性访问的意外调用。”在IE中使用appendChild()

时间:2011-07-07 23:52:39

标签: javascript internet-explorer iframe

function fload(){
  f = document.createElement('iframe');
  f.setAttribute('id','iframe');
  f.setAttribute('src','http://www.wtsp.com/news/article/199268/8/man-falls-behind-on-payments-mortgage-company-has-home-trashed');
  f.setAttribute('frameborder','0');
  document.getElementById('content').appendChild(f);
}

我正在尝试在其他所有内容加载后加载iframe。以上是代码。在IE9中,控制台显示“SCRIPT65535:对方法或属性访问的意外调用”。指向appendChild()的行。

另外,是否可以异步加载iframe?

1 个答案:

答案 0 :(得分:2)

正如评论员所说,id content 的元素可能尚不存在。此外,您不需要使用 setAttribute ,只需直接设置DOM属性:

function fload(){
  var f;
  var el = document.getElementById('content');

  if (el && el.appendChild) {
    f = document.createElement('iframe');
    f.id = 'iframe';
    f.src = 'http://...';
    f.frameborder = '0';
    el.appendChild(f);
  }
}

在您确信元素存在之前,您应该调用上述函数,例如在加载事件之后或类似事件之后。