Is it possible to catch F5 in a Silverlight application - silverlight

I have a feature request to catch the F5 key and refresh content within a Silverlight application instead of having the browser refresh the entire application. In a simple app, I tried hooking the KeyDown event and it never gets there with F5.
Is this something that is possible to do in Silverlight?

The browser gets all key pressed first and determines whether it will pass them to the hosted content (Silverlight) or not. AFAIK there is no way of stopping a refresh when F5 is pressed, since it will always be handled by the browser.
You may be able to use javascript to detect the keypress and pass it to SL, but I'm pretty sure that won't stop the browser from refreshing.

I found this post that shows how to do it in javascript. I tested it and it works (IE9)... unless you have the focus in the Silverlight application :-).
This SO post is similar, but doesn't have a solution yet either.
After trying that out, I agree with #Phil, that stopping the refresh probably isn't possible, at least for IE.

If the client is happy to let your code to that to their browser then perhaps you can persuade them to install the app out-of-browser where you can have much greater navigational control

Related

Uppy ReactJs - handle access to microphone/webcam in iframe

First post after decades as a frequent visits, thanks all for the help throughout the years!
Im building a solution that will require webcam/microphone access.
The solution will be running in an iframe in another system.
We cant controll the attributes on the iframe to add allowed="..." and our solution is (and must) hosted on another domain.
IE, we cant show the promt for the user allowing access to webcam/mic
We want to use Uppy webcam in an popup window, but, as we noticed, the actual promt for access occurs in the "mainpage" and not the popup, so we cant seem to reach it.
If we run the solution when its not in an cross-origin iframe (new tab), everything works perfectly!
Any suggestions on how to work around this issue?
Regards
Pär

AngularJS app is not loading on Safari (iOS 5.1.1) back button. Any suggestions?

I've ran into an issue with Safari on iOS 5.1.1 and Angular where I am doing paginated results. After I decide to leave the page that is hosting the app, and then come back to the page by using the browser's history back button.
The application is not initialized so as I scroll again, the pagination functionality is not triggered.
Since 5.1.1 doesn't provide a web inspector, I had to rely on console.log to print events that I want to see that it's executing. On initial load, I see everything ok, but when I am back through the back button nothing fires.
My usual ways of fixing this are not working. Here are the things I've tried:
Used manual bootstrapping of Angular app
Made the page not support caching and expire the page as soon as it's rendered.
Neither of these helped, which is why I am here asking for some suggestions. Unfortunately it's not a very easy thing to replicate through a Fiddle or a hosted HTML file so I am unable to provide one. Hoping that some of you may have experienced this before.
Thanks in advance for any help.
Answer is quite late and I hope you found a solution already but it might be useful for others.
Unfortunately I won't be able to answer why the app is not initialized (due to the lack of code) but I can give you some tools/tips to ease the debugging (assuming you have the iOS simulator).
Debuging on mobile safari can be done either :
with weinre and get the features of the web concole,
or by enabling remote debugging in Mobile Safari itself, see here
Yea, same problem here with iOS 7. It must send the DOM structure over before running any javascript. Kinda pointless...
Since the problem is with mobile safari and since it supports popstate event, you can use this event to detect when the user is back in combination with $location.path(), for example:
$(window).bind("popstate", function () {
alert(location.pathname + $location.path());
});

Windows Phone show ConnectionSettingsTask and back

I am working on a windows phone app right now.
In the app, I am handling an exception in page 1, that when there is no wifi connection, it will pop a XNA messagebox, user can choose to open the WIFI settings page. I have the following code:
ConnectionSettingsTask connectionSettingsTask = new ConnectionSettingsTask();
connectionSettingsTask.ConnectionSettingsType = ConnectionSettingsType.WiFi;
connectionSettingsTask.Show();
But the problem with this is, when user hit back key in the wifi settings page, they will be navigate back to page 1, which has a loading problem and can not display the proper content. In this case, I would like user to directly go to another page, call it page 2.
Is that possible? Thank you
++++++++++++++Update
Is there are way to customize the back key functionality when showing the XNA messagebox?
I don't know about XNA coding much, but I do know that if you return from wifi connection page to your app, the OnNavigatedTo function is invoked. Try setting out your flow of code according to the application flow. If there is some code you have executed at the constructor, shift it to OnNavigatedTo and vice-verse, which may solve your problem. Also if you want to shift to another page, do it in the same function (OnNavigatedTo) itself. Hope it helps.
Maybe you can change the navigation behavior: http://blogs.msdn.com/b/ptorr/archive/2010/08/28/redirecting-an-initial-navigation.aspx
However it is recommended to merge the two pages together (hide loading bar and show main page) as you will have less problems...
why not handle this code in the IsNetworkAvailable check? that way you'l avoid the exception altogether

Silverlight Notification API in-browser

I'd like to use the Notification API to create toast notifications for a Silverlight app designed to run both in and out of the browser, but the NotificationWindow class is only available OOB.
Does there exist anything that can replicate the behaviour inside the app? My idea is to have a container in the bottom right of the screen overlaying all other content. Then, create a wrapper which detects OOB-mode, passing params to the Notification API if possible, or populating and showing my own container if not. Is there anything that does this available?
It seems strange that MS chose not to implement something like this, as has been pointed out before.
Displaying a notification in browser is simple. You just need to use a popup and make it appear in the right place. See the following post as an example.
Now the difference with that approach is that the notification will show inside the browser. In OOB it shows outside the window and it's visible even if the windows is minimized. Due to security reasons it's not possible to directly do this.
Out of interest, Chrome Applications like Tweetdeck and Gmail, are able to display notifications outside of the browser. I think this might be a possiblity, but not exactly a Silverlight and cross browser solution.

How can I disable F5 (refresh Browser) for Silverlight application without affecting closing?

I was reading this post and noticed that when I am closing browser or tab the message is showing as well. I need to disable the Refresh button or give some warning but problem with solution in that post is that it shows message when I close browser.
Is there any way to show message only on refresh?
I know that there are some posts like this on stackoverflow.com, but none of them work for me. So this is not a duplicate question unless there is a working solution.
window.onbeforeunload from JavaScript (as noted in the post you link to) really is the only way this can be done in a cross-browser, cross-platform way, that I know of.
But that does end up getting triggered for F5. That's just the way browsers work - they unload a page before reloading it, even in the refresh case.
Do you really find users hit F5 often enough for such a prompt to be a problem?
Isn't it possible to catch a key down event on F5?
If not with silverlight you can probably with a keyboard hook.

Resources