内蔵ブラウザエンジン(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で追加された記法が使用されている可能性がございます。使用されている場合は、以下回避策を実施下さい。

【回避策】

・旧記法に変換する外部サービス(babel等)を利用し、変換する
・JavaScript Executionタブ > JavaScript Changes > Replace Textで置換する 
※コードの編集は非常に複雑なので、推奨しません。
<例> letが使われている場合
JavaScript Executionタブ > JavaScript Changes > Replace Textで、"let"を "var"に置き換える。
(単語"let"が全て置き換わってしまうので、"let (半角スぺース)"で置換します。)
・Chromiumを使用する
・Device Automation(Desktop Automation)を使用する

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

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

▲10.4以前のバージョン
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

 

コメント

0件のコメント

記事コメントは受け付けていません。