Facebook chat hides Flash apps when open - facebook

While running a Flash app, if I open a new or existing Facebook chat window, my Flash content disappears. I can continue to hear music playing from the app and when I close/minimize the Facebook chat window, my Flash content reappears. Is this a known issue?
This is happening in Google Chrome 15 and Internet Explorer 9 on Windows 7 with Flash Player 11.
I checked this on my own Flash app as well as on another Flash app made by someone else and the same behaviour is occurring. It does not however hide non-Flash content.
It seems to be a bug with Facebook chat and Flash content.

from http://developers.facebook.com/docs/appsonfacebook/tutorial/:
If you are hosting an Adobe Flash application within Canvas, it is recommended that you set the wmode of the Flash object to "opaque":
...
Other modes (including the default mode, wmode="window", wmode="direct", and wmode="gpu") require us to hide your flash object when dialogs, popups, chat tabs, and ticker flyouts occur. This can be unpleasant or confusing for users.

From the documentation:
If you must use wmode values of window or direct, Canvas will automatically hide and display the Flash object when Dialogs, Ticket flyouts, Chat Tabs and Notifications display.
Developers who wish to provide a custom hide and display experience may pass a JavaScript function in the hideFlashCallback option for FB.init. This function will be executed whenever the Flash object is hidden or displayed due to user behavior (clicking on a Notification, etc.) and can be used by a developer to take the appropriate actions: hiding or displaying their Flash object.
FB.init({
...,
hideFlashCallback: function(params) {
if (params.state == 'opened') {
$('#some-image').show();
FB.Canvas.hideFlashElement(params.elem);
} else {
$('#some-image').hide();
FB.Canvas.showFlashElement(params.elem);
}
});

Related

embeding flash in page tab

Anyone have solution to display flash inside Page Tab URL, that works in the newest Chrome? Chrome blocks embedding for security reasons. Console error:
Unsafe JavaScript attempt to access frame with URL https://www.facebook.com/pages/[CUT] from frame with URL https://[PAGE_TAB_URL]. The frame being accessed set 'document.domain' to 'facebook.com', but the frame requesting access did not. Both must set 'document.domain' to the same value to allow access.
I know, that I can display flash in canvas mode (apps.facebook.com/appname), but I want to embed it inside Page Tab.
Well I once had the same problem, I've built a facebook iframe app that would allow users to use the webcam to take a pic and the .swf responsible for using the webcam, always fired that error.
If you embed a youtube video, chrome will fire that error, but the videos still plays, in my case the .swf object just frozen and I was unable to take any pic or even change flash settings.
The solution was to add this .swf after a user action, in this case a click, just try not embedding the flash on the page, and just put a button that will add the embed code after the user clicks on it.

Flash does not reappear after hiding on FB canas app using wmode=direct

I'm working on a FB canvas app using Flash with 3D graphics.
I must embed my SWF with param wmode="direct".
On FB, when opening FB UI dialog (such as: purchase credits), FB automatically hides (visibility=hidden) the flash, and after dialog closes, FB returns the old visibility value.
On Chrome and Firefox it works, but on IE, after the dialog closes I checked the flash element style and I saw that visibility=visible, but still the flash is still hidden!
Anyone know how to fix this?
Thanks!
Roei
UPDATE: Just for clarify: it works when using wmode is transparent, opaque and window. Just when using "direct" it does not re-appear...

When a user launches "new window" in a home screen app

When a user launches "new window" link in a home screen app.
In Mobile Safari this type of action would open a new tab. What happens if the app is on the home screen and has name="apple-mobile-web-app-capable", content="yes" active.
Will the window still technically be in another tab, although you cant get back to the original one - or will it just navigate within the current tab?
First of all, unfortunately window.open method does not work at all.
Instead, a < a href="..". >...< /a > works and by default launches Safari and opens the link in a normal browser window (so, if the user wants to come back to the app, he has to doubleclick the iPad key and switch back to it).
You can force the link to open inside the app (so replacing the current page) with the tricks listed here: iPhone Safari Web App opens links in new window
Hei, I found a brilliant way to have a "window.open" effect in an iOS webapp too!
It loads a page in a Safari tab and has solved my problem, maybe it can be useful to others: http://webdeveloper.com/forum/showpost.php?p=1161159&postcount=14
It's also a great way to avoid the popup blocker (the blocker would stop a window.open(url) call but it doesn't stop that method) :-)

How to require fullscreen mode in a jQTouch application?

I'm using jQTouch to develop a version of a website optimized for safari on the iphone. The jQTouch demo helpfully shows how to show an "install this" message for users not using full screen mode and hide it for those who are. When in fullscreen mode, the body should have the class "fullscreen." So you can hide the "install this" message for people who have already added your app to their home page by adding this css rule to your stylesheet:
body.fullscreen #home .info {
display: none;
}
What I'd like to do is require users to use the app in fullscreen mode only. When viewed from the regular browser, they should only see a message asking them to install the app. That message should of course be hidden otherwise.
This ought to be really, really easy, so I must just be missing something obvious.
I thought one way to do this would be to simply test for the class "fullscreen" on the body: if it's not there, use goTo to get to another div, or hide the other divs, or something like that.
Strangely, however, this doesn't work. As a test, I've still got the original "info" message, as in the jQTouch demo, and it doesn't show up when I launch in fullscreen mode. So the body must have the fullscreen class. And yet I can't find any other trace of it: when I put this alert to test things after the document has loaded, I get nothing when launching in fullscreen mode:
alert($("body").attr("class"));
I also thought I might test for fullscreen mode by checking for the value of the fullScreen boolean. But this doesn't seem to work either. What am I missing? What is the best way to do this?
Well, I couldn't figure out why the standard way wasn't working, but someone on the jQTouch Google Group suggested this, which works:
if (window.navigator.standalone) {
alert ('Thanks for launching this app your home screen')
} else {
alert('Add this app to your home screen for the best experience')
}

Launching Safari in-app?

Is it possible to Launch Safari without having the app close? Just like the in-app email compose window.
I'm aware of how to display a webpage in UIWebView. I'd like to use a full web browser, i.e. Safari.
You can use a UIWebView to display web content in your app.
You can create a UIWebView with the URL to display. It will follow any links that the user touches, but that won't give you the address bar, search, navigation buttons, bookmarks or the page (tab) control. Those you'll have to add yourself, but odds are you don't want all of that. (Do you really need Google searches in your app?)
Creating a controller to manage a UIWebView and as much or as little navigation as you need is pretty easy. With a little planning, your custom controller class will also a good thing to keep in your library for the next app.
No you can not make use of the full Safari from within your own application. Your application must terminate for Safari to open.
In iPhone OS 2.0 you also had to terminate in order to send e-mails, so some chance exists that Apple couls open up Safari in the same way for iPhone OS 4.0. Make sure to request it at http://bugreport.apple.com if you are eager.
The second best option currently available is to roll your own "Browser view controller" using UIWebView. Let it have back, forward, stop/reload buttons, and an extra button for opening in Safari if the user is not content. This is how many of the greatest apps our there, like Tweetie, does it.