0

JavaScript/jQuery のドラッグ可能なウィジェット マネージャーに取り組んでいます。現在、これはコンテナーを手動で移動し、ソート値を (PHP を介して) DB に保存するのにうまく機能しています。クライアントにさまざまな広告ゾーンを配置する簡単な方法として、これをまとめています。

問題は、ゾーンを移動しようとすると、ゾーン内に JavaScript 広告コードがあると jQuery が機能しなくなることです。失敗のポイントは、ゾーンの ID を取得するためにクラス コンテナーを選択しようとしたときです。

 var items=[];  
  $('.column').each(function(){  
      var columnId=$(this).attr('id');  
      $('.dragbox', this).each(function(i){ 
          var item={  
              id: $(this).attr('id'),  
              collapsed: 0,  
              order : i,  
              column: columnId  
          };  
          //Push item object into items array  
          items.push(item);  
      });  
  }); 

この配列を作成すると、JSON 経由で更新スクリプトに渡されます。問題は、広告サーバー コードがある場合、配列に何も作成されないことです。これがどのように見えるかの例です(HTML)

<div class="dragbox" id="item1">
<h2><span class="configure" ><a href="#" >Configure</a></span>Handle 1</h2>
<div class="dragbox-content" >
    <!-- Panel Content Here -->
    <script type='text/javascript'><!--//<![CDATA[
var m3_u = (location.protocol=='https:'?'https://ads.mytestsite.com/_ads/delivery/ajs.php':'http://ads.mytestsite.com/_ads/delivery/ajs.php');
var m3_r = Math.floor(Math.random()*99999999999);
if (!document.MAX_used) document.MAX_used = ',';
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
document.write ("?zoneid=24");
document.write ('&cb=' + m3_r);
if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used);
document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));
document.write ("&loc=" + escape(window.location));
if (document.referrer) document.write ("&referer=" + escape(document.referrer));
if (document.context) document.write ("&context=" + escape(document.context));
if (document.mmm_fo) document.write ("&mmm_fo=1");
document.write ("'><\/scr"+"ipt>");
//]]>--></script><noscript><a href='http://ads.mytestsite.com/_ads/delivery/ck.php?n=a7d957c0&cb=&n=a7d957c0' border='0' alt='' /></a></noscript>

</div>
</div>

私が'<script type='text/javascript'>'物を取り除くと、うまくいくようです。私は< / > ' " ! -- [文字でいくつかのテストを行いましたが、それらはすべて問題ないようです。

ご覧のとおり、私はクラス コンテナーの ID を取得して JSON に渡そうとしているだけですが、コンテンツはこのコンテナー内にあるため、問題が発生していると思います。Firefox のエラー コンソールでもテストしましたが、エラーは報告されません。

どんな提案でも大歓迎です!

ハンジ

4

1 に答える 1

1

ブラウザーが</script>JavaScript の解釈中に を検出すると、それが文字列内にある場合でも、ブラウザーはそれを終了タグとして扱います。

関連する質問: JavaScript 文字列のスクリプト タグ

一般的に使用される手法は、連結演算子を使用することです。

var test = '………… </scr'+'ipt>';

于 2012-07-25T20:13:12.927 に答える