我永远不会考虑使用window.opener在父窗口中调用javascript函数,但最近已经遇到它并且想知道。
答案 0 :(得分:4)
为了绝对清楚,window.opener
是对使用window.open()
打开当前窗口的窗口的引用。这是唯一方式来获取JavaScript中的这样一个窗口。在谈论“父”窗口时你必须要小心,因为这可能意味着包含当前帧或iframe的窗口,window.parent
是对包含当前窗口的窗口对象的引用。
关于你的问题:
值得庆幸的是,它比以前打开新窗口要少得多。在没有用户知情和同意的情况下,或者没有用户明确采取行动(例如点击某些内容来触发它),这样做总是一个坏主意。大多数人现在都有弹出窗口阻止器,这通常会抑制你的新窗口。简而言之,可能有一些用例是合理的事情(例如,我喜欢在开发时有一个单独的JavaScript日志记录窗口),但总的来说最好避免使用。
我不认为Ajax或标签浏览对打开新窗口的做法下降有很大影响。我认为最大的单一影响是由雅各布尼尔森等着名的可用性专家(见http://diveintoaccessibility.org/day_16_not_opening_new_windows.html和http://www.useit.com/alertbox/990530.html)领导的对用户造成的困惑和烦恼的增加。此外,许多广告都使用弹出窗口,这对用户来说非常烦人,并直接导致弹出窗口阻止程序的崛起。