是否可以在第二次调用打开帧的触发器后将焦点放在帧上(Firefox)

Is it possible to put focus on frame after trigger to open frame is invoked a second time (Firefox)?

本文关键字:焦点 Firefox 第二次 调用 是否 触发器      更新时间:2023-09-26

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

我有以下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 使用基于父窗口的参数。 我无法访问该代码,因此我无法添加检查以确保数据匹配,直到我从此重定向中得到响应

为每个新窗口指定一个新名称。您是否有理由重复使用"NI payment"名称?

如果您的代码依赖于此窗口名称,则应考虑直接传递窗口引用 (NIWindow) 而不是名称。一般来说,注入/传递依赖项而不是依赖魔术超级全局是一种更好的方法。