内蔵ブラウザエンジン(Webkit/Classic)でサポートしていないJavaScript

フォローする

概要

内蔵ブラウザエンジン(Webkit/Classic)でサポートしていないJavaScriptについて解説します。
Webkitエンジンは、ECMAScript 5をサポートしていますが、ECMAScript 6(2015)で追加された機能はサポートしておりません。※ ECMAScript = JavaScriptの仕様

ただし、Ver.10.4で追加された「ポリフィル(Polyfill)」機能により、ECMAScript 6で追加された機能の一部が実行可能になりました。

以下では、ECMAScript 6で追加された機能の対応可否について解説します。
なお、Classic エンジンに関してはECMAScript 5、ECMAScript 6 ともにサポートしていません。

具体例

ECMAScript 6で追加された記法の対応可否

BizRobo! Basicの全てのバージョンでECMAScript 6で追加された記法(アロー関数、テンプレートリテラル、let等)をサポートしておりません。
この記法で書かれているWebサイト操作時、browser TracerのJavaScriptタブに以下のようなエラーメッセージが表示されることがあります。

"Illegal token"

"Unexpected identifier"


上記のエラーメッセージが出力されている場合、ECMAScript 6で追加された記法が使用されている可能性がございます。使用されている場合は、以下回避策を実施下さい。

【回避策】

・JavaScript Executionタブ > JavaScript Changes > Replace Textで、旧記法に変換する外部サービス(babel等)が利用できるようWebサイトのフォームを置き換える
※Replace Textでフォームの置き換えを行うことで、DS内では置き換え後のフォームが解析されます。
 そのため、旧記法に変換する外部サービスを利用できる記載に置き換えをすると、ECMAScript 6の記述を旧記法に変換した状態で表示することが可能となる場合があります。
 また、外部サービスの利用方法に関しましてはサポートできかねますため、お客様判断にて実施をお願いいたします。

・JavaScript Executionタブ > JavaScript Changes > Replace Textで、ECMAScript 6の記述を置換する 
※コードの編集は非常に複雑なので、推奨しません。
<例> letが使われている場合
JavaScript Executionタブ > JavaScript Changes > Replace Textで、"let"を "var"に置き換える。
(単語"let"が全て置き換わってしまうので、"let (半角スぺース)"で置換します。)

・Chromiumを使用する

・Device Automation(Desktop Automation)を使用する

ECMAScript 6で追加されたオブジェクト、APIの対応可否

BizRobo! Basicのバージョンによってサポート範囲が異なります。

▲Ver.10.3以前のバージョン
10.4以前のバージョンでは、ECMAScript 6で追加された全てのオブジェクト、APIをサポートしておりません。
ECMAScript 6で追加されたオブジェクトを使用しているWebサイト操作時、browser TracerのJavaScriptタブに以下のようなエラーメッセージが表示されることがあります。

"〇〇 is not defined"


上記のエラーメッセージが出力されている場合、ECMAScript 6以降で追加されたオブジェクト、APIが使用されている可能性がございます。

使用されている場合は、以下回避策を実施下さい。

【回避策】
・JavaScript Changesで代替となるJavaScriptを書く
<参考ナレッジ>
Design StudioでWebページが表示されず、Browser Tracer のJavaScript欄に “Map is not defined” の例外が出力している。
・Chromiumを使用する
・Device Automation(Desktop Automation)を使用する

▲Ver.10.4以降のバージョン
Ver.10.4で追加されたポリフィル機能により、以下のJavaScriptオブジェクト、APIを実行することができます。
ポリフィル機能でサポートされていないオブジェクト、APIを使用している場合は、下記の回避策を実施してください。

【回避策】
・Chromiumを使用する
・Device Automation(Desktop Automation)を使用する
・「JavaScript 変更」または「JavaScript ポリフィル」のカスタム機能で代替コードを書く
※JavaScriptの代替コードの使用・記載内容についてはサポート対象外です。
お客様判断にて実施をお願いします。

<Pollyfill機能でサポートされているオブジェクト、API一覧>

オブジェクトまたは API

注意

Array.prototype.values

Array.prototype.keys

Array.prototype.includes

Array.prototype.findIndex

Array.prototype.find

Array.prototype.fill

Array.prototype.entries

Array.prototype.copyWithin

Array.prototype.contains

Array.prototype.@@iterator

Array.of

Array.from

 

Element.prototype.replaceWith

Element.prototype.prepend

Element.prototype.matches

Element.prototype.closest

Element.prototype.before

Element.prototype.append

Element.prototype.after

 

DOMTokenList.prototype.@@iterator

 

IntersectionObserverEntry

IntersectionObserver

 

Intl

オブジェクトの全セットおよび次の言語をサポートします。

da, de , en, ja, ru

Map

オブジェクトの全セットをサポートします。

Math.trunc

Math.tanh

Math.sinh

Math.sign

Math.log2

Math.log1p

Math.log10

Math.imul

Math.hypot

Math.fround

Math.cosh

Math.clz32

Math.cbrt

Math.atanh

Math.asinh

Math.acosh

 

NodeList.prototype.forEach

NodeList.prototype.@@iterator

 

Number.parseInt

Number.parseFloat

Number.isSafeInteger

Number.isInteger

Number.MIN_SAFE_INTEGER

Number.MAX_SAFE_INTEGER

Number.Epsilon

 

Object.values

Object.setPrototypeOf

Object.keys

Object.entries

Object.assign

 

Promise

Promise.prototype.finally

 

RegExp.prototype.flags

 

Set

オブジェクトの全セットをサポートします。

String.prototype.contains

String.prototype.codePointAt

String.prototype.endsWith

String.prototype.@@iterator

String.prototype.includes

String.prototype.padEnd

String.prototype.padStart

String.prototype.repeat

String.prototype.startsWith

String.prototype.trim

 

Symbol

Symbol.hasInstance

Symbol.isConcatSpreadable

Symbol.iterator

Symbol.match

Symbol.search

Symbol.species

Symbol.split

Symbol.toPrimitive

Symbol.toStringTag

Symbol.unscopables

 

Url

オブジェクトの全セットをサポートします。

WeakSet

WeakMap

 

 

区分 確認Ver
仕様 10.4.0.1