HTML がレンダリングされているときに、デバッグ テキストが DOM に挿入されるという状況に (少し制御不能に) 遭遇しました。テキストは次のようになります。
, NameSpace.ClassName, Version=x.x.x.x, Culture=neutral, PublicKeyToken=null
テキストは要素内ではなく、インラインでレンダリングされます。少なくとも adiv
または a内に配置されている場合span
は、それについて何かを行うことができますがbody
、モジュールがロードされる場所の一部にすぎません。そこで、まず次のことを試しました。
var goodText = $('body').html();
goodText = goodText.replace(/, Plugin.[a-zA-Z0-9]*, Version=\d\.\d\.\d\.\d, Culture=neutral, PublicKeyToken=null/g, '');
$('body').html(goodText);
これによりテキストがミックスから取り除かれますが、ドキュメント全体body
が置き換えられるため、jQuery のドキュメント準備が再び開始されます。私の他のスクリプトは、北極圏のラマの赤ちゃんのように泣き始め、ページがバラバラになります。
モジュールによる出力として、ページの典型的なチャンクは次のようになります。
<div class="row">
, NameSpace.ClassName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
<div> some stuff</div>
<script> $(function(){ // some script }); </script>
</div>
したがって、 をターゲット.row
にしても、テキストを上記の regex/string.replace に置き換え、要素に HTML を設定すると、その jQuery ブロックが再び実行されます。簡単に言えば、フックの多い落書きの山です。
補足として、RazorGenerator を使用してモジュールをロードし、Asp.Net MVC4 プロジェクトで DLL と BoC のプリコンパイル済みビューをビルドしています。
また、カスタム ActionFilterAttribute のクラスレベルの実装を使用してみましたが、このテキストが実際に生成/レンダリングされている場所をトラップ/オーバーライドできるものは何もありません。
ここでのオプションは何ですか? 別の方法でそのテキストをスクラブできますか? そのスクリプト ブロックの実行を 2 回ブロックできますか? ASP.NET 要求パイプラインに、デモ テキストを実行できる他のオプションはありますか?