###前提
業務で比較的大規模なウェブアプリの1画面に対して簡単な改修をすることになりました。
cssのクラス名を修正すれば不具合は解消することがわかっていますが、
cssを修正するということで他にそのcssを適用している部分があれば影響が出てしまう恐れがあり、
影響範囲の洗い出しを行っています。
ただ、jsで動的に生成されるポップアップがある可能性があり、その部分に該当のクラス名が使われていた場合は開発者ツールを使った単純な検索やgrep等では洗い出しきれない可能性があります。
その画面にどれだけのポップアップが隠れているかわからないからです。
補足
自分はつい先日この現場に配属されて、ほぼ初めてWeb系の技術に触れている初心者です。
昔htmlとcssの入門書をざっとやったことがある程度で、JavaScriptに至ってはほぼ触ったことがありません。
また本質問は以下の質問から派生したものになります。(本質問だけ読んでいただければご回答いただけるようにはしているつもりです。)
https://teratail.com/questions/306667
###現状わかっていること
html上で親要素に.parentというクラス名が適用されていて、その子要素に.childというクラス名が適用されている場合、cssで「.parent .child」として定義されているクラス名がその子要素の方に適用されると思います。
ここで例えば、css上で「.parent」のみを「.hoge」に変更する修正をした場合、影響範囲として「.parent .child」を適用している要素をすべて洗い出さなければならなくなります。
このような場合、どうやって「.parent .child」が適用されている要素を検索すればいいでしょうか?(単純に「.parent .child」でgrep検索しても、html上では親要素と子要素に分かれて適用されているため、当然うまくヒットしません。)
ブラウザ上で表示されている画面のhtml上で「.parent .child」が適用されている箇所を検索するのならば、F12開発者ツールのコンソール上で「$('.parent').find('.child')」と打ち込めば調べられるようです。(他にもうまい方法があれば教えていただきたいです。)
###実現したいこと
たとえば特定の操作をした場合にjsによって表示させるポップアップなどに「.parent .child」クラスが適用されていた場合、該当のポップアップを表示しなければ開発者ツールを使った上記方法ではヒットしない場合があるようです。
jsによって生成されるhtml上で、「.parent .child」クラスが適用されている要素をできるだけ漏れなく洗い出す方法を教えてください。
補足
知りたいのはあくまで**「影響範囲の洗い出し」**の方法である点を強調しておきます。
ちなみに、影響範囲の洗い出しは、改修の対応によって他の部分に不具合が生じないことをお客様に説明する目的もあります。
また、説明資料に記載できる明快な方法(改修担当者の勘や経験に頼らず誰が見てもわかる確実な方法)を求めています。
###サンプルソース
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <link rel="stylesheet" href="./style.css"> 6 </head> 7 <body> 8 <!-- 修正したい部分(本来は適用したくないクラスが適用されている)--> 9 <span class="parent"> 10 <span class="child">Hello</span> 11 </span> 12 13 <!-- 影響を与えたくない部分 (ポップアップなどを展開すれば他にもあるかもしれない)--> 14 <span class="parent hoge"> 15 <span class="child">World</span> 16 </span> 17 </body> 18</html>
css
1.parent .child{color:red;} 2/* .parentという名称だと”Hello”の部分にも適用されてしまうため、以下のように変更する対応をする。 3.hoge .child{color:red;} 4なお、影響箇所が未知のため、上記は暫定的な改修案として記載しています。 5たとえばHTMLの他の要素に「.parent .child」が適用されており、かつその親要素に「.hoge」の適用がなければこの修正方法は不適切となる可能性があります。*/
回答3件
あなたの回答
tips
プレビュー