概要
セキュリティの観点で、Kaizen Platform(サイト改善)のデザイン案で使えるJavaScriptコードを、制限させて頂いております。
このページでは、制限されているコードの種類と、デザイン案で一部の制限コードを利用する方法について記載します。
制限されているコード
以下のコードが制限されております。
- jQuery の Ajax カテゴリのメソッド
eval
alert
confirm
prompt
jQuery
(jQueryの記述の際は$
をご利用ください)top
*1 (例:window.top
)self
parent
*2 (例:window.parent
)XMLHTTPRequest
document
window
*1 jQueryの offset().top
は使用可能です。
*2 jQueryの .parent()
は使用可能です。
コードの挙動について
一部、エクスペリエンススクリプトに記述した時と、異なる挙動をするコードがあります。
下記にはそれらのコードについて、デザイン案のJavaScriptタブでも利用可能にする方法を記載します。
注意事項(必ずお読みください)
この先では、エクスペリエンススクリプトを使った方法をご案内しています。
エクスペリエンススクリプトに記述したJavaScriptは、エクスペリエンスが実行されるページにてKaizen対象外ユーザー・オリジナル案・デザイン案全てに実行されます。
思わぬ不具合に繋がる可能性がありますので、十分に動作確認をしてから記述をしてください。
なお、ご利用は自己責任にてお願いいたします。
また、エクスペリエンススクリプトは使用方法を誤ると、デザインが反映されない・計測ができない等の問題が発生する可能性がありますので、ご利用は自己責任でお願いします。→ JavaScriptコードステータスを活用する を参照し、ラウンド開始前に計測ができているかを確認しましょう。
ここではサンプルコードを公開していますが、より複雑なコードの提供や、お客様のページに合わせたコードの提供は、サポート対象外となっております。ご了承ください。
kzs
クリックトラッキングAPIなど、「kzs」を利用することがありますが、デザイン案のJSタブに「kzs」と記述しても動作しません。
デザイン案のJSで利用したい場合は、一度エクスペリエンススクリプトで定義することで、利用できるようになります。
例: クリックトラッキングAPIをデザイン案のJSで利用したい
そのまま記述した場合
//デザイン案JavaScriptタブ
kzs('trackClickGoals', 123456);
//結果(エディターで「反映」をクリックした時点でアラートが出ます)
Calling kzs is not allowed.
一度エクスペリエンススクリプトで定義してから使う場合
//エクスペリエンススクリプト
window.sendClickTrackGoals = function(goalId){
kzs('trackClickGoals', goalId);
};
//デザイン案JavaScriptタブ
sendClickTrackGoals(123456);
//結果(エディターで「反映」をクリックした際に下記のアラートが出ますが、期待通り動きます)
TypeError: Cannot read property 'useK1' of undefined
Promise
エクスペリエンススクリプトに記述した際は、Kaizen独自の「Promise」が呼び出され、IEでも動きます。
デザイン案のJSで「Promise」と記述しても、「window.Promise」が呼び出されるため、IEでは動きません。
エクスペリエンススクリプトと同じ「kzs.Promise」をデザイン案のJSでも利用したい場合は、一度エクスペリエンススクリプトで定義することで、利用できるようになります。
一度エクスペリエンススクリプトで定義してから使う
//エクスペリエンススクリプト
window.kzPromise = kzs.Promise;
//デザイン案JavaScriptタブ
var firstFunc = function () {
console.log("do firstFunc");
};
var secondFunc = function () {
console.log("do secondFunc");
};
kzPromise
.resolve()
.then(firstFunc)
.then(secondFunc)
.catch(function (e) {
console.error("variation exception", e);
});
//結果(IEでも動きます)
"do firstFunc"
"do secondFunc"
0 コメント