Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在同一窗口中打开url时,window.opener未定义_Javascript_Html_Angularjs_Javascript Objects - Fatal编程技术网

Javascript 在同一窗口中打开url时,window.opener未定义

Javascript 在同一窗口中打开url时,window.opener未定义,javascript,html,angularjs,javascript-objects,Javascript,Html,Angularjs,Javascript Objects,在我们的Angulajs控制器中,我们尝试在同一窗口中打开外部URL(这是在同一浏览器中打开URL的要求,而不是创建弹出窗口),使用以下行: window.open("www.youraddress.com","_self") 当我们试图获取父窗口的实例(访问控制器方法)时,我们总是将window.opener作为undefined。你能告诉我原因吗 如果我们使用window.location.href=“www.youraddress.com” 请告诉我我们缺少什么?如果在同一窗口中打开页面

在我们的Angulajs控制器中,我们尝试在同一窗口中打开外部URL(这是在同一浏览器中打开URL的要求,而不是创建弹出窗口),使用以下行:

window.open("www.youraddress.com","_self")
当我们试图获取父窗口的实例(访问控制器方法)时,我们总是将
window.opener
作为
undefined
。你能告诉我原因吗

如果我们使用
window.location.href=“www.youraddress.com”


请告诉我我们缺少什么?

如果在同一窗口中打开页面,旧窗口对象将被销毁。不再有可供
window.opener
参考的对象。只有当窗口仍然存在时,才能继续引用它。即使可以,您也将被拒绝访问其内容,因为您正在向其中加载外部URL,因此同源策略将发挥作用。即使没有SOP,该窗口中的所有内容(包括它曾经拥有的JavaScript环境)都将被销毁


您打算继续使用的任何代码或数据都需要位于您尝试使用的窗口中。
window.opener
(或位于另一个未被替换的相关窗口中)。

我相信这是有意的。如果在新选项卡或窗口中打开链接,则您的
窗口上只有一个值。如果该窗口位于其他域中,您将无法引用该打开程序。如果该窗口替换了同一个窗口,那么由于您刚刚销毁了该页面,有什么可供参考的?它就像一块白板,你把它擦掉,然后换上新内容。@epascarello:但更重要的是:你把白板拿出来扔进垃圾箱,然后在同一个地方换上一块新的白板。:-)好吧,这对我来说很有意义。但是,在这种情况下,如何访问控制器方法?我甚至已经准备好使用window.location.href,但没有找到调用控制器方法的方法。@SKJ:你不能,该窗口中的任何内容都不存在了。您需要将您想要继续使用的任何东西放在您试图使用的窗口中
window.opener