TrailheadにLightning Experienceの判定方法が紹介されていました。
Sharing Visualforce Pages Between Classic and Lightning Experience Unit | Salesforce Trailhead
JavaScriptでの判定方法
JSの処理中にLightning ExperienceかSalesforce Cloassicか判定する場合は、次のように判定すればいいみたいです。
function isLightningExperienceOrSalesforce1() { return((typeof sforce != 'undefined') && sforce && (!!sforce.one)); } if( isLightningExperienceOrSalesforce1() ) { // Do something for Lightning Experience } else { // Use classic Visualforce }
SOQLでの判定方法
ユーザ項目に『UserPreferencesLightningExperiencePreferred』という項目が追加されていました。これをつかって判定ができるみたいです。
実際にクエリを実行してみた結果がこちらです。
この『UserPreferencesLightningExperiencePreferred』項目ですが、そのユーザがどちらのモードを利用しているかをフラグで持っているみたいです。
Salesforce Classicを利用している場合
Lightning Experienceに切り替えた場合
けっこうおもしろい項目だと思います。ただし、「クエリを使った判定方法は非推奨です」と記載がありました。
Querying for the user’s Lightning Experience preference directly is discouraged. The result tells you what the user’s current preference setting is, not what user experience is actually on their screen. If the user is using an older browser, the preference value might not reflect the user experience that’s actually being delivered.
クエリ判定の方はあまり利用しないほうがいいかもしれません。