フォローする

デザイン案におけるJavaScriptコードの制限、挙動

 

概要

セキュリティの観点で、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人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

0 コメント

サインインしてコメントを残してください。