window.opener在ie中未定义,但在chrome中未定义,ff

时间:2018-09-20 16:57:01

标签: javascript internet-explorer window.open

我打开一个新页面,并在IE(使用ie 11)窗口中。opener未定义。 window.open返回的窗口引用也充满了未定义或空的Object

我新打开的页面需要从主页获取Xrm对象,因为否则无法获取它,并且需要它来执行我的所有功能。 代码:

function openCountyTab() {
  countyTabRef = window.open("countyTab", "countyTab");
  return false;
  }

在新标签的js文件中,我有var opener; window.onload = function() { ... opener = window.opener; ...}

我已经尝试了很多方法,包括将其发送到完整的url,使用Blob并从中创建一个url(这将返回拒绝访问),我还需要提到在发送window.open("fullDomainName") {{1 }}我回来的是Object标签。

编辑:我将更清楚地说明我的问题。我需要打开一个位于同一域中的新HTML页面,它需要通过<Access Denied>对象或从打开它的窗口中获取。现在,Xrm对象是必需的,因为我在新打开的页面上运行的脚本中使用了它。具体来说,我正在使用的名为Xrm的lib需要它。

我使用它来检索和修改Microsoft CRM平台上服务器上的数据。我做任何事情都没有问题,因为在FF,Chrome上一切正常。问题是XrmServiceToolKit无法获得XrmServiceToolKitcontext对象,因为它是页面上的Xrmnull。因此,我不能运行我的脚本,因为它依赖于此。因此,我需要一种方法来在IE11中打开一个新页面(而不是替换当前窗口),并为其提供此undefined对象。

希望可以清除它。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

MDN中window.opener的{​​{3}}表仅列出支持此变量的Chrome,Firefox和Android Webview,所有其他浏览器都是未知的,并且显然不兼容。

因此,您不应在需要可移植到所有浏览器的应用程序中依赖它。

如果需要在一个窗口和另一个窗口之间进行通信,请查看Browser Compatibility机制。