删除脚本标记

时间:2014-08-16 20:34:14

标签: javascript jquery

我在cms系统中使用Highcharts创建了一些图表。

我只允许将HTML和Javascripts放在一个小“框”中。这里我包括Jquery和Highcharts库。还有我自己的剧本。

我的问题是cms系统在网站的末尾包含另一个Jquery库(在我的“box”之后)。

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/maps/modules/map.js"></script>
<script src="http://code.highcharts.com/maps/modules/data.js"></script>
<script src="http://code.highcharts.com/maps/modules/exporting.js"></script>
$(function () {

$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=us-population-density.json&callback=?', function (data) {
    $.each(data, function () {
        this.code = this.code.toUpperCase();
    });
 [...]

 == MY PART ENDS ==
[...]
<script type="text/javascript" src="jquery/js/jquery-1.8.3.min.js"></script>

此代码包含我的图表(当Jquery加载两次时),我想找到一个快速而肮脏的解决方案来阻止浏览器加载第二个Jquery文件。

如:

<script>
script = document.getElementsByTagName('script');
for(i = 0;i < script.length; i++)
{
   if (script[i].src == "jquery/js/jquery-1.8.3.min.js")
   document.getElementsByTagName('script')[i] = "";
}
</script>

但是这不起作用,因为脚本标签是在cms中的“我的部分”之后。

你有解决方案吗?

3 个答案:

答案 0 :(得分:2)

删除脚本标记不会清除内存,即使在删除脚本标记之后执行的内容仍然存在。

你是否试着坚持第一个jQuery,例如,通过重命名你的'$'或用像($)这样的参数调用你的包装函数?

答案 1 :(得分:1)

我不知道你可以修改脚本标签,但你可以使用选择器。例如;

<script id="jquery1" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

然后你可以用id选择器删除它,就像$(&#34; #jquery1&#34;)。remove(); 如果没有被误解,那就是它。

答案 2 :(得分:1)

尝试使用jQuery.noConflict(true)来防止不同版本或库之间的冲突,请在documentation阅读更多内容。而且jsFiddle表明使用$引用了jquery的第一个加载版本

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>jQuery.noConflict demo</title>
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<div id="log">
  <h3>Before $.noConflict(true)</h3>
</div>
<script src="//code.jquery.com/jquery-1.6.2.js"></script>

<script>
var $log = $( "#log" );

$log.append( "2nd loaded jQuery version ($): " + $.fn.jquery + "<br>" );

// Restore globally scoped jQuery variables to the first version loaded
// (the newer version)

jq162 = jQuery.noConflict( true );

$log.append( "<h3>After $.noConflict(true)</h3>" );
$log.append( "1st loaded jQuery version ($): " + $.fn.jquery + "<br>" );
$log.append( "2nd loaded jQuery version (jq162): " + jq162.fn.jquery + "<br>" );
</script>

</body>
</html>