Check if a device is iOS inside an HTML email - ios

Is it possible to check if a device is iOS inside an HTML email?
I want to display Apple and Google maps schema links to the native apps, but only if the device supports it.

Had a look online and couldn't even find a hack in CSS. Shame there is no equivalent to the <!--[if gte mso 9]> tags. It looks like the answer is technically no...
Good thing in this case is that Mac has different CSS support to other clients, so you can leverage that as a work around in email.
Try using one of the CSS selectors (Nth child for example). These are CSS attributes that only mac recognizes.
Theoretically you could hide something by default and set the Nth child selector to show the Mac only content.
If you were really despirate, you could also display some 'mac only' text using RGBA or HSLA colors on the same color background (making it invisible).

Consider using the same link in the email, like example.com/emailLink, where that endpoint on your server is server-side code (like PHP) detecting the browser and then delivering the link you'd like.
http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/

Related

Any way to force webpage to print exactly as it looks in browser?

I am looking for options on how to deal with an issue as I don't think there is an easy fix.
We're dealing with a really stubborn client that doesn't want to accept the fact that browsers don't print css backgrounds by default.
He's convinced that XP running IE 6 & 7 are the most common browsers and we are a bad company for not supporting them. (I've shown him analytics from our typical client's visitors but it hasn't changed his mind). I'm rewriting his site to work on them but am stuck with the print stuff now.
He would like (demand is a more accurate term) to have the page print exactly as it looks on the site as well as them look exactly the same in all operating systems & browsers. I don't think it's feasible to go through and put all the images in the html instead of in the css and I've tried the list-style tip without luck. Lots of the color of the site comes in from background css colors as well.
Is there any other options? Or even suggestions on how to deal with this client?
Try something like:
<style type='text/css'>
#import 'whatever.css' screen, print;
</style>
Make sure #import is above all other CSS tags, and that you target the external stylesheet that you have your CSS for your page on.
Here's a slightly different approach:
I would consider converting the web page to a pdf which you can print instead.
An nice way to do the conversion is through a product called PhantomJS. It's essentially a headless browser that will render the page and convert it to a pdf on the fly. You can integrate by running the PhantomJS server and add a link on the original page to download the pdf.
The pdf will then print the page consistently across all browsers. There is however a decent amount of additional work, so you have to consider if it's a good fit for your needs and timeline...
Additional complexity with this solution is that you have to host the PhantomJS javascript server somewhere, write a PhantomJS script using the API to convert your page to pdf.
Pdf and image conversions are relatively easy to do, but you have to also consider authentication if your pages require login. PhantomJS will write the converted file to disk on the server, so you would also have to manage downloads to the user's browser.
All in all it's a good chunk of work, but you might find it interesting to at least learn about it :-).
More info here:
http://phantomjs.org/

How to make inline LabelFields

I'm working in a Blackberry app (OS 5.0) and need to show recent tweets of the user.
I'm able to get the data from Twitter's end. Now after parsing the entities (hashtags, urls, user-mentions etc), I need to display them with separate formatting (color, bold etc). So I'm using different LabelFields for different parts of the tweet.
But LabelFields are by default block elements. How do I put those LabelFields inline, so that it looks like how it is shown in Twitter?
like this:
Others have suggested RichTextField but you'd have to write your own text filter to colour the syntax - it's going to be a lot of effort. If having the clickable links inline is a must then personally I'd use a BrowserField but that would mean your logic would have to output a full screens worth of tweets into html (screens don't like having more than one browserfield - it's doable with more than one but there's some hacks) and manage the click events - more complications.
Alternatively you could do something like this: http://devblog.blackberry.com/2009/10/how-to-use-table-view-layout/ You wouldn't have clickable regions within the text body but it'd still be using native fields instead of 'cheating' with markup, probably the best way.
I've found that there's a component in Blackberry SDK called ActiveRichTextField which automatically scans its contents and parses links making them focusable and clickable. Furthur it'll also parse entities if Twitter app is installed in that device. For now it solves my problem. Thanks guys.

Stop part of page being index by search engines?

How can I stop search engines indexing part of my page? Is there an HTML5 element for this?
Its just a line of text that I want to hide (a co-worker doesnt want their name on google for some reason). Im thinking that I could inject the text with javascript, but I have heard google does sometimes look inside javascript files.
I also thought of using images instead of text, but im concerned how this will look cross device and platform. Ive noted text rendering can differ on mac and pc and thats before ive had to think about mobile devices, retina displays, etc.
Thanks
You can't hide content unless you use the methods you've already outlined above. Your best bet is to use JavaScript in an external file and then block that file using robots.txt.

Web content that's conditional on the BlackBerry model number

I have a responsive site that I'm developing where I'm using a image slider as the header that works great and responds great in Android, iPhone with both vertical and landscape views. According to an online testing simulator; it even renders great in Blackberry Torch. HOWEVER, in Blackberry Curve - the image slider seems to break the layout.
Is there any way or any such thing as a code that will detect which device I'm using and hide an element accordingly? Like a BlackBerry Curve conditional statement / media query something?
Any suggestions?
I suggest you check the user-agent string sent up by the phones browser to identify the handset model and return the most appropriate HTML.
For the format of the string please see: How to detect the BlackBerry Browser.
Please also see Auto detect mobile browser (via user-agent?) as to how you may use the user-agent in a conditional statement/configuration in many platforms/languages.
I think media queries support came in BB OS5 and the phone you mentioned (Curve, depending on the model) can have an earlier OS version. Also I don't think any media queries exist that will distinguish based on a phones model number.

workaround for contenteditable on iPad

I have a web application that uses TinyMce to allow rich text editing. Some of my customers are desperate to get it to work on iPad (which doesn't support contenteditable and therefore TinyMce doesn't work)
At the moment the only choices I have are:
Disallow rich text editing when i detect the browser is iPad. This is not much of a solution because my app relies heavily on rich text editing
Wait for iPad to support contentEditable
Write my own iPad app. This isn't really workable because it's a big complex app with loads of HTML and javascript and I would have to rewrite it all
Use another browser. As far as I know none of the other browsers support contenteditable either.
I'm really keen to find some workable solution. is there such thing as a rich text editor that doesn't require contenteditable? or does anyone have a clever idea I hadn't thought of?
Thanks in advance
Andy
As of June 2011, it looks like there may be support coming in iOS 5
http://www.tuaw.com/2011/06/08/will-ios-5s-safari-deliver-better-support-for-web-editors/
this observation (that it's working in the beta) has been confirmed by a colleague of mine too.
Write my own iPad app. This isn't
really workable because it's a big
complex app with loads of HTML and
javascript and I would have to rewrite
it all
Not necessarily true. You can embed the working part of your web app in a UIWebView component, which is basically Safari embedded in your app, and handle the not working part in the app (providing content). It would require work for sure, but maybe a lot less than rewriting the whole app for iPad.
At to this point there are no browsers on the ipad that will allow RTE. Actually there is only one phone giving full browser support for RTE (sry, i forgot the name of the phone).
Therefor, i think you almost showed all possible solutions (jv42's suggestion excluded) yourselve.

Resources