If you’re using Xrm.Navigation.openWebResource(webResourceName, windowOptions, data), you probably are already using ‘data’ to the HTML Web Resource you are opening.
Here, I’m using an alternate method. I use JSON to send my data since it is widely preferred and used. Basically, I’ll Stringify my JSON object and add it to session storage, then – retrieve it from sessionStorage and Parse is back to object.
Opening Web Resource
Now, in my example, I’m not passing my data in the ‘data’ parameter provided by Xrm.Navigation.openWebResource(), instead I’m putting it in JSON.
- Let’s say, somewhere in my code, I want to send out a JSON to the HTML Web Resource which will open in a new window.
So, instead of passing ‘data’ to Xrm.Navigation.openWebResource(), I’ll simply do the following –
First, create a JSON object of what I want to send as data.
Then, I’ll use sessionStorage.setItem(“<key>”, JSONObject); to add it to the sessionStorage and then open the WebResource using Xrm.Navigation.openWebResource()
Reading from Session Storage
Reading from sessionStorage is as easy as putting data into it. Just the reverse –
- Assuming you are familiar with HTML and JS references, make sure you have correctly referenced the JS file you want to use with your HTML. Provide the name of the Web Resource in which you have your JS code.
- Once the HTML document is loaded (I prefer using JQuery here to put things into document), you can read the same using sessionStorage.getItem(“<Key>”);
And then, JSON.parse() the object retrieved from sessionStorage.
- Also, if you look at the Application tab in Dev Tools of your browser, you can check for Session Storage info.
You’ll find the Item you stored to the session
That way, you can use sessionStorage to keep your data in the browser session if you don’t have any other concerns or reasons not to use sessionStorage.
Hope this helps!!
[…] Pass data to HTML Web Resource using browser’s sessionStorage in Dynamics 365 CE […]
LikeLike
This is so good. Cheers.
LikeLike
Thanks! I’m glad this is helpful.
LikeLiked by 2 people
This is very interesting. CRM doesn’t seem to allow more than ~8000 characters in the url. So storing the data in sessionStorage rather than attaching it as parameters to the url would solve that problem, wouldn’t it?
LikeLike
True. And on top of that, managing using session storage is much more convenient too. Hope this was helpful for you.
LikeLike