0

我正在开发一个 JavaScript/jQuery 可拖动小部件管理器。目前,这在手动移动容器并将排序值保存到数据库(通过 PHP)方面效果很好。我将这些放在一起是为了以一种简单的方式为客户定位各种广告区域。

现在的问题是,当我试图移动我的区域时,当区域内有 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

每当浏览器在 javascript 解释过程中遇到 a</script>时,即使它在字符串中,它也会将其视为结束标记。

相关问题:JavaScript 字符串中的脚本标记

一种常用的技术是使用连接运算符:

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

于 2012-07-25T20:13:12.927 回答