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 要求パイプラインに、デモ テキストを実行できる他のオプションはありますか?