Salesforce ドメインでの JavaScript の実行
Salesforce 組織では、パッケージ化されていない顧客コード、Salesforce コード、パッケージ化されているコードなど、多くの異なる種類の JavaScript コードが実行されます。一般にコードは、互いに共同作業する手段を持たない複数のベンダーから提供されます。それらのコードを同じオリジンで実行すると、あるベンダーのコードが他のベンダーのコードに干渉する場合があります。
コードの干渉を防ぐため、ベンダーの JavaScript コードは Sandbox 化されます。Visualforce ソリューションの場合、JavaScript コードは、一意のベンダー固有のオリジンで Sandbox 化されます。Lightning ソリューションと Lightning Web コンポーネント (LWC) の場合、JavaScript は、一意のベンダー固有の Locker で Sandbox 化されます。
Sandbox の外に出したり、オリジンの外部でコードを実行したりしようとすることは、セキュアなコーディングに違反します。ベンダーが作成した JavaScript コードを、ホームページコンポーネント、Web リンク、またはカスタムボタンを介して Salesforce オリジンで実行しようとすることも、セキュアなコーディングの違反に含まれます。
多くの場合、適切なオリジンで実行される Visualforce、Aura、または Lightning Web コンポーネントを使用して、同じ機能を実現できます。
メタデータの例
1<?xml version=”1.0”encoding="UTF-8"?>
2<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
3<actionOverrides>
4<actionName>Accept</actionName>
5 <type>Default</type>
6</actionOverrides>
7<webLinks>
8 <fullName>Add_to_List</fullName>
9 <openType>onClickJavaScript</openType>
10 <url>{!REQUIRESCRIPT("/soap/ajax/30.0/connection.js")}</url>
11</webLinks>
12...
13</CustomObject>オブジェクトにコードを直接埋め込むのではなく、Visualforce Aura コンポーネントの Visualforce ボタンを作成するか、または Lightning Web コンポーネントを使用してください。