IE中的window.document

时间:2013-12-10 22:28:08

标签: javascript html internet-explorer dom popup

我有这个js来显示一个弹出窗口:

oauthpopup.js:

popup.show = function(options) {
  this.destination_ = options.destination;
  this.windowOptions_ = options.windowOptions;
  this.closeCallback_ = options.closeCallback;
  this.win_ = null;
  this.win_ = window.open(this.destination_, "_blank", this.windowOptions_);
  if (this.win_) {
    // Poll every 100ms to check if the window has been closed
    var self = this;
    var closure = function() {
      self.checkClosed_(); 
    };
    this.timer_ = window.setInterval(closure, 100);
  }
  return false;
};

popup.checkClosed_ = function() {
  if ((!this.win_) || this.win_.closed) {
    this.handleApproval_();
  }
};

popup.handleApproval_ = function() {
  if (this.timer_) {
    window.clearInterval(this.timer_);
    this.timer_ = null;
  }
  if (this.win_) {
    this.win_.close();
    //this.win_ = null;
  }
  try {
    console.log(this.win_.document);
    if (this.win_.document.scripts[0].innerHTML === 'window.close();') {
      this.closeCallback_();
    };
  } catch (ex) { }
  this.win_ = null;
  return false;
};

页面脚本

popup.show({destination: '/auth/' + channel, windowOptions: 'location=0,status=0',
    closeCallback:function() {
      switchView(divToShow);
    }
  });

function switchView(divtoShow) {
  $("#" + divtoShow).addClass("hidden");
  $("#" + divtoShow).removeClass("hidden");    
};

它在Chrome和Firefox中完美运行,但在IE中这行:this.win_.document.scripts [0] .innerHTML不起作用,我把它放在一个警告()但没有任何反应。

编辑: 脚本标签'window.close();'在html页面中从rails控制器呈现。 html页面在渲染时关闭弹出窗口,弹出窗口用于twitter和google身份验证。 如何在呈现页面并关闭页面后执行回调?

0 个答案:

没有答案