i had a component a testComponent.

<aura:handler name="init" value="{!this}" action="{!c.doInit}" />

its controller is

doInit : function(component, event, helper) {
        console.log(typeof sforce != 'undefined');

when i embed this component in my detail page of contacts. it is given sforce as undefined. i am excepting that in lightning it should return as true.

  • sforce === undefined would return true is sforce is undefinde
    – itsmebasti
    Oct 23, 2017 at 9:13
  • You are writing the code in a lightning component itself. I didn't get the rationale behind checking whether its a lightning page or not. I suppose for this component, typeof sforce will always be true Oct 23, 2017 at 9:17
  • @HemantJain this component can be in embeded in visualforce Page to use it in classic. Oct 23, 2017 at 9:18
  • Added a answer, see if it helps Oct 23, 2017 at 9:34
  • 1
    sforce returns true if the device is mobile and false if it is desktop.
    – Sikha Baid
    Oct 23, 2017 at 9:46

1 Answer 1


You can use UserContext variable to check whether the component is being used in Salesforce1/Classic/LEX.

Refer the link of a blog here, which explains the usage and implementation of this.

Another detailed, example of managing the Visualforce and Lightning experience is here

Also, here is a similar question answered.

You can use this Usercontext UI theme value to detect the type of page.

See if this helps

  • actually i have 4-5 levels of components. So i donot want to pass attribute from visualforce down to eacha nd every component. I want to check within component . Oct 23, 2017 at 13:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .