Is it possible to put focus on frame after trigger

2019-08-21 17:02发布

I am having an issue in firefox. My research so far is telling me that there is not really a reliable way to deal with my problem, but I am wanting to ask just in case.

I have the following javascript/jquery to open a new window triggered by pressing a button on my page:

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

In Chrome and Firefox, this opens a new frame, and the frame gets focus. This is fine. However, if a user leaves this new frame open, and comes back to my original page. They are able to hit the button to trigger this event again. If this occurs, the new frame reloads as it should, but in Firefox the new frame does NOT pull focus this on this refresh. I am not sure why it would pull focus on the initial new frame load, but not pull focus if the frame is refreshed with the same event trigger. I haven't had the courage yet to check this in IE...

Is this one of those things that you cannot reliably control? Or is there a way to do this? Note, I have tried using NIWindow.focus() after the initial window open line of code above. No luck.

I believe I read something about possibly using alerts, but I was not sure how to implement the described solution, and I read that it was a bit of a hacky solution.

I could just always open a new window "_blank", and that would assure focus, but the newly opened frame url uses parameters that are based on the parent window. I have no access to that code, so there is no way for me to add checks to make sure data matches up, until I get a response back from this redirect

1条回答
Animai°情兽
2楼-- · 2019-08-21 17:27

Give each new window a new name. Do you have a reason for reusing the "NI payment" name?.

If your code has dependencies on this window name you should consider passing the window reference (NIWindow) directly instead of the name. Injecting/passing your dependencies instead of relying on a magic super global is a better approach in general.

查看更多
登录 后发表回答