Reopen a same link in inline frame dynamically does not work on Axure Cloud


#1

An inline frame and 3 buttons(B1, B2 and B3) are placed in page P1.

Intent:

  1. Button B1 clicked will open page P2 in the inline frame and set the state panel in Page2 to State1.
  2. Button B2 clicked will open page P2 in the inline frame and set the state panel in Page2 to State2.
  3. Button B3 clicked will open Page P3 in the inline frame.

Result:
It worked in localhost, but problem always occur on Axure Cloud as below:
1)click B1, it works as expected.
2)click B2, the panel stayed at State1, not change to State2.
3)click B3, Page3 opened.
4)click B2, Page2 opened, and the panel changed to State2 as expected.
5)click B1, the panel stayed at State2, not change to State1.

It seems that it’s optimized on the Axure Cloud to not reopening a same link in an inline frame.

Is it true?

BTW, a global variable is used to help Page2 set the panel’s state after Page Loaded.


#2

I’ve had similar issues in the past, but not sure about this specific problem. My go-to fix if all pages are in the prototype (versus loading external webpage in the iFrame) is to put all the content on one page with a dynamic panel instead of an inline frame. Each state of the dynamic panel hosts all the content on each sub-page. (And in your case, you can nest the dynamic panel on Page 2 into the parent dp.) So that is one approach that should work here.

I thought I would test out your setup to see if I could find a workaround with an inline frame and separate pages.

Here is the .rp file: pages in iframe.rp (84.4 KB)

Here is an Axure Cloud prototype from that file: https://wtz4gj.axshare.com

The approach here is to use a jump page that redirects to the intended page. So, instead of directly loading Page 2, it sets the global variable and loads Page 4. Page 4 is blank with one action in its Page Loaded event: Open Link Page 2 The result is the same page is not loaded twice in a row. This works for me in a local preview, in the published HTML, and on Axure Cloud.

  • The 3 secondary buttons on the left set the OnLoadVariable to their text value (a quick way to get their “number”) and then load Page 2 (or page 3) directly.

    • For good measure, they also set the text value of a widget on the page so we can easily see the current value of OnLoadVariable.
    • Then, when Page 2 is loaded, it sets the dynamic panel state based on the value of OnLoadVariable, and also displays the value of OnLoadVariable (In the past, there have been issues tracking global variables between pages in an inline frame; I think those bugs have been fixed.)
    • Indeed, they work when previewing, but not in the published prototype (either published HTML locally or published to Axure Cloud.) I would call this a bug, and you can report it to support@axure.com (although I wouldn’t expect a fix in RP9 since RP10 has been current for years now.)
  • The 3 primary (blue) buttons on the right do the same thing, except they open Page 4 --our jump page.

    • When Page 4 is loaded, it automatically and immediately opens Page 2 “in the current window” --which is the inline frame on Page 1.
    • So, if you try to open Page 2 twice in a row it is done by first opening Page 4 which then opens Page 2, so the page in the inline frame widget always changes, thus always refreshing.
    • This can result in a short “blink” between inline frame page loads. If you don’t like this you could try adding an animated transition where the inline frame widget is hidden and then shown (e.g., with a “Fade 500 ms” option) or use the dynamic panel approach described in the first paragraph above instead of an inline frame.

#3

Hi mbc66,

Thanks a lot for your tremendous reply, the solution by introducing a page4 is really a brightful idea. I will use it.

Thanks again for the help.
Best Regards.


closed #4

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.