# Perspective: Open Vision Window

**URL:** <https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518>\
**Category:** Ignition\
**Tags:** perspective, vision, ignition80\
**Created:** [May 7, 2020, 10:36am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518 "2020-05-07T10:36:37Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [May 7, 2020, 10:36am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/1 "2020-05-07T10:36:37Z")

</div>

Hi Everyone!

Can anyone answer me one question: Is it possible to open an Vision window from Perspective via Gateway or Session scripts?  
The idea is: I connect one Perspective page (via WebBrowser) in Vision, so I need open an Vision window when I click the button (in Perspective page).  
I tried to do that (via Project Library script, Gateway Script and Session Script), but I get error, that **nav** (when I use _system.nav.navigate()_) is not allowed.

Thanx in Advance!

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [May 7, 2020, 11:14am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/2 "2020-05-07T11:14:53Z")

</div>

Perspective scripts run in the gateway, so there’e no system.nav you can use.

Since Perspective and Vision are separate sessions, you would probably need to use [system.util.sendMessage()](https://docs.inductiveautomation.com/display/DOC80/system.util.sendMessage) to signal the Vision session to switch windows.

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [May 7, 2020, 11:48am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/3 "2020-05-07T11:48:32Z")

</div>

Thanx!!!  
It works!!! 😍

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [May 8, 2020, 5:44am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/4 "2020-05-08T05:44:56Z")

</div>

Hi,

One problem: When I open new window in Vision, so it opening on all clients…  
I tried to use “clientSessionId”, but it didn’t help… (I used Session ID variable.)  
Maybe You know how to use this Message only on client who opened window…?

In the System tag Folder I didn’t find any session Id also…  
and… I looked for the information about clientSessionId, but [\>here\<](https://docs.inductiveautomation.com/display/DOC79/system.util.sendMessage)… I didn’t find anything also…(((

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [May 8, 2020, 3:25pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/5 "2020-05-08T15:25:54Z")

</div>

Someone more knowledgeable than me will have to answer that one to be sure, but if it’s on the same machine, then would **session.props.host** in Perspective be the same as **[System]Client/Network/Hostname** in Vision?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 8, 2020, 3:37pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/6 "2020-05-08T15:37:27Z")

</div>

You could also pass a session ID into Perspective (for it to send back out) using a URL parameter; you would just construct the URL property on the web browser component in Vision dynamically using the system/client tag; see [https://docs.inductiveautomation.com/display/DOC80/Pages+in+Perspective#PagesinPerspective-PassingParameters(URLParameters)](https://docs.inductiveautomation.com/display/DOC80/Pages+in+Perspective#PagesinPerspective-PassingParameters(URLParameters)) for more details.

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [May 8, 2020, 5:14pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/7 "2020-05-08T17:14:32Z")

</div>

The link to the page is in Vision’s WebBrowser  
I don’t have any clue how to send to the Browser URL link with parameters. 😕

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/1/1821ee65d6d7763b4cd0010877980e8654171a41.png)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 8, 2020, 5:23pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/8 "2020-05-08T17:23:57Z")

</div>

Put a binding on the starting URL property, something like:  
`"http://gatewayip:8088/main/system/perspective/project/view?session=" + runScript("system.util.getClientId()")`

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [May 9, 2020, 3:16pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/9 "2020-05-09T15:16:55Z")

</div>

THANX so much! It works! 🤩

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [October 7, 2020, 7:48am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/12 "2020-10-07T07:48:37Z")

</div>

in 8.1.1 this script doesn't work..

I also tried disable this script and popoup doesn't openat all...  
when I launch a perspective without Vision (in Browser) it works, but in Vision WebBrowser PopUp doesn't work...

in log I get this kind of message:

> Flood limit tripped, starting 5000ms cooldown.  
> ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/3/b33a1d8f6d5823a5faf9e4a10ae3343b95e5aa3d.png)
> 
> ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/2/c254fed9346d203a1453f3289ce162d9fbcc75f1.png)

and... after update, I get the white screen

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/4/34bf3ca628f9e0b22375b136e8cddc050daad60e.png)

😕

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 7, 2020, 3:59pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/13 "2020-10-07T15:59:44Z")

</div>

You’re running some script on the JxBrowser internals which broke because we bumped the JxBrowser version from 6 to 7. It’s not related to any of the scripting in this thread.

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [October 8, 2020, 11:04am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/14 "2020-10-08T11:04:45Z")

</div>

> [@paul-griffith](#):
>
> because we bumped the JxBrowser version from 6 to 7.

and how to open popups now?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 8, 2020, 12:52pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/15 "2020-10-08T12:52:12Z")

</div>

~~Has this ever worked? A button script in Perspective, even when running in a Vision Web Browser component, is still going to execute in the gateway.~~

🙃

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [October 8, 2020, 2:01pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/16 "2020-10-08T14:01:39Z")

</div>

> [@pturmel](#):
>
> Has this ever worked?

SURE!! It works perfectly!  
I decided to downgrate to version 8.0.16 only because of that problem, because we VERY need this function! 🙈 🙉 🙊

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [October 8, 2020, 2:23pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/17 "2020-10-08T14:23:54Z")

</div>

> [@paul-griffith](#):
>
> You’re running some script on the JxBrowser internals which broke because we bumped the JxBrowser version from 6 to 7. It’s not related to any of the scripting in this thread.

Paul suggested you've got some other script written against implementation details of JXBrowser 6. Can you share that script?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 8, 2020, 4:01pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/18 "2020-10-08T16:01:12Z")

</div>

> [@Kevin.Herron](#):
>
> Paul suggested you’ve got some other script written against implementation details of JXBrowser 6. Can you share that script?

Specifically, whatever is being passed to `system.util.invokeLater`.

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [October 9, 2020, 5:16am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/19 "2020-10-09T05:16:25Z")

</div>

> [@paul-griffith](#):
>
> Specifically, whatever is being passed to `system.util.invokeLater` .

I can for sure)  
The main problem was in PopUp's sizes. When I pushed the button to open it, PopoUp was so small...  
I didn't write it by myself. I can't remember who gave me this, but here we go:

```auto
if event.propertyName == 'componentRunning':
	def addPopupHandler():
		from javax.swing import JFrame, WindowConstants
		from java.awt.event import WindowAdapter
		from java.awt import Dimension, BorderLayout
		from com.teamdev.jxbrowser.chromium.events import DisposeListener
		from com.teamdev.jxbrowser.chromium.swing import BrowserView
		from com.teamdev.jxbrowser.chromium import PopupContainer, PopupHandler
		from functools import partial

		class MyWindowAdapter(WindowAdapter):
			def __init__ (self, browser):
				self.browser = browser
				
			def windowClosing(self, e):
				self.browser.dispose()

		def showPopup(browser, initialBounds):
			browserView = BrowserView(browser)
			browserView.setPreferredSize(initialBounds.getSize())
			frame = JFrame("Popup")
			frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
			frame.add(browserView, BorderLayout.CENTER)
			frame.pack()
			frame.setLocation(initialBounds.getLocation())
			frame.setVisible(True)
			frame.setMinimumSize(Dimension(1248, 768))
			frame.addWindowListener(MyWindowAdapter(browser))

		class MyPopupContainer(PopupContainer):
			def insertBrowser(self, browser, initialBounds):
				system.util.invokeLater(partial(showPopup, browser, initialBounds))
		browser = event.source.getBrowser()
		class MyPopupHandler(PopupHandler):
			def handlePopup(self, params):
				return MyPopupContainer()

		try:
			browser.setPopupHandler(MyPopupHandler())
		except:
			1

	system.util.invokeLater(addPopupHandler, 5000)

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [October 9, 2020, 12:27pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/20 "2020-10-09T12:27:43Z")

</div>

Popups in JXBrowser 7: [https://jxbrowser-support.teamdev.com/docs/guides/popups.html#swing](https://jxbrowser-support.teamdev.com/docs/guides/popups.html#swing)

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [October 9, 2020, 12:44pm UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/21 "2020-10-09T12:44:18Z")

</div>

> [@Kevin.Herron](#):
>
> Popups in JXBrowser 7

❤ thanx! I will try it later when we back to 8.1.1 stable version...

---

<div class="post-metadata">

**Author:** ![iscrac](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/iscrac/32/49757_2.png) [@iscrac](https://forum.inductiveautomation.com/u/iscrac)\
**Post date:** [October 26, 2020, 8:23am UTC](https://forum.inductiveautomation.com/t/perspective-open-vision-window/34518/22 "2020-10-26T08:23:02Z")

</div>

Hi,

How to refresh Vision Page?  
Problem is… When happens that connection was lost, so the Client ID changes its value.  
but…  
so… on the WebBrowser StartingURL:

```auto
runScript("'http://ip:8088/data/perspective/client/project/vision/'+system.util.getClientId()")

```

doesn’t change when connection is back…

so… is there a way to refresh a Vision Page?  
I need it for running client scripts for open Vision page.

Thanx in Advance…
