[Javascript] ページ内のDOM構造変化をリアルタイムに取得する「MutationObserver」

2016年9月13日

Javascript テクノロジー プログラミング

JS提供型のSaasツールは、企業サイドで便利に機能を導入できるのだが、最近のSaasツール開発元で大きな問題が発生しているらしい。 それは、企業のWEBページがjQueryを使用して、HTMLソースコードに依存しないぐらいトリッキーになっているらしい。 一昔前は企業WEBページと言えば、どこもかしこも「prototype.js」ライブラリを使って、AJAX処理やページUIを動的に行う表示処理をカスタマイズしていたのだが、スマートフォンが登場して依頼、モバイルファーストが基本になり、コンテンツ自体もAJAX対応で実HTMLソースには一切記述がないままデプロイされているため、ツール開発会社は、その手のトリッキーなWEBサイトは考慮されていないため、そうした対応を個別に行わざるを得ない状態という事なのです。

何故動的ページが問題なのか?

トリッキーなWEBサイトという表現を行なったが、こういったページが何故問題なのかというと、 WEBページのUIを設計できていて、IDやclass管理がキッチリできている企業WEBサイトであれば何も問題がないのだが、 WEBページの製作会社が複数にわたっていて、統一ルールが存在しなかったり、何回かのアップデートが繰り返されて、仕様がブレブレにブレているWEBサイトの場合は、ツールで任意プロパティやDOM構造をベースに行うパターンが多いため、その構造体を崩してしまうWEBサイトでは、JSエラーが頻発するようなツールの動作になってしまうのである。 これは、こうした事を想定していないツールが悪いのか、お作法が整っていないWEBサイト側が悪いのか・・・いささか追求しずらいのだが、 WEBページの基本基準である「w3c」の基準に従っていないWEBページはある程度自分のページのお作法の悪さを修正すべきである。 https://www.w3.org/ 英語サイトだが、WEBエンジニアたるもの、このサイトの仕様は知っておくべきレベルなのである。 そして、WEBページのソースコードを登録すると、「バリデーションチェック」してくれる機能もあり、自分のWEBサイトを一度規定からどの程度外れているか、診断してみよう。 https://validator.w3.org/ URLを入れたりHTMLソースを直接登録できるので、是非採点してみよう。

WEBページのDOM構造の変化を取得する関数

var mo = new MutationObserver(function(mutationRecords){ console.dir(mutationRecords); }); var target = document.body; var config = { childList: true }; mo.observe( target , config ); この方式を利用すれば、WEBページが変更された事を取得してイベント発火し、都度ツール対策を行う仕組みにすればいいのだ。 でも実はこの機能、GoogleChromeでしか確認していないのだが、他のブラウザでは動作するのだろうか??? Chromeで動作することが分かったので、ChromeExtensionでライブラリ化して使えそうだ。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ