0

我在 Firefox 中遇到问题。到目前为止,我的研究告诉我,没有真正可靠的方法来处理我的问题,但我想问一下以防万一。

我有以下 javascript/jquery 来打开一个通过按下我的页面上的按钮触发的新窗口:

alipayTransactionModalTrigger.click(function() {
     NIWindow=window.open("<!--ALIPAY_CONF_REDIRECT_URL-->", "NI payment");
     alipayTransactionModal.dialog("open");
  });

在 Chrome 和 Firefox 中,这会打开一个新框架,并且该框架获得焦点。这可以。但是,如果用户让这个新框架保持打开状态,然后返回到我的原始页面。他们可以点击按钮再次触发此事件。如果发生这种情况,新框架会按原样重新加载,但在 Firefox 中,新框架不会将焦点拉到此刷新上。我不确定为什么它会关注初始的新框架加载,但如果框架使用相同的事件触发器刷新,则不会关注焦点。我还没有勇气在IE中检查这个......

这是您无法可靠控制的事情之一吗?或者有没有办法做到这一点?请注意,我在上面的初始窗口打开代码行之后尝试使用 NIWindow.focus() 。没运气。

我相信我读过一些关于可能使用警报的信息,但我不确定如何实现所描述的解决方案,并且我读到它是一个有点骇人听闻的解决方案。

我总是可以打开一个新窗口“_blank”,这样可以确保焦点,但是新打开的框架 url 使用基于父窗口的参数。我无权访问该代码,因此我无法添加检查以确保数据匹配,直到我从此重定向得到响应

4

1 回答 1

0

给每个新窗口一个新名称。你有理由重用这个"NI payment"名字吗?

如果您的代码依赖于此窗口名称,您应该考虑直接传递窗口引用 (NIWindow) 而不是名称。注入/传递你的依赖而不是依赖一个神奇的超级全局通常是一种更好的方法。

于 2013-02-01T16:16:34.573 回答