Javascript 为什么附加脚本在IE8和IE9中运行两次?

Javascript 为什么附加脚本在IE8和IE9中运行两次?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我正在为ASP.NET应用程序进行客户端工作,下面的功能可以跨浏览器工作: $('#identifier').click(function () { $('#script-placeholder').append('<script type="text/javascript" src="SERVICEURL?callback=test"></script>'); }); 但是,在IE8和IE9中,如果执行一次脚本,导航到另一个页面,然后返回并再次单击“

我正在为ASP.NET应用程序进行客户端工作,下面的功能可以跨浏览器工作:

$('#identifier').click(function () {
    $('#script-placeholder').append('<script type="text/javascript" 
    src="SERVICEURL?callback=test"></script>');
});

但是,在IE8和IE9中,如果执行一次脚本,导航到另一个页面,然后返回并再次单击“标识符”,则回调函数将被调用两次。有人知道为什么或者知道解决方法吗?任何帮助都将不胜感激!(注意,我在本地主机上遇到了这个问题).

谢谢大家的回答!在我发布了这个问题之后,我四处阅读,发现有另一种方法来打电话,而不是添加脚本标记:jQuery的getScript。。。这最终对我有用。下面是我如何使用它的:

    $('#identifier').click(function () {
        var url = 'SERVICEURL?callback=test'
        $.getScript(url);
    });

希望这对将来的人有所帮助!仅供参考:在对Jquery的站点进行了更多的阅读之后,我发现(这就是他们解决缓存问题的方法):默认情况下,$.getScript()将缓存设置设置设置为false。这会在请求URL中附加一个带时间戳的查询参数,以确保每次请求脚本时浏览器都会下载该脚本。

我知道有两种方法 方法1:-
在调用前在URL中添加一些附加参数

$('#identifier').click(function () {
     $('#script-placeholder').append('<script type="text/javascript" 
    src="SERVICEURL?callback=test&t="+Math.random()></script>');
});

可能您可以在附加之前尝试清除#脚本占位符的内容?谢谢,Zeal。我确实尝试过这种方法,但IE似乎出于某种原因仍在缓存脚本标记。。。Getscript最终为我工作。再次感谢!谢谢,克谢哈!您给出的第一个建议正是jQuery的$.getScript函数为我所做的。第二种选择也会奏效。我没有考虑它(特别是因为我对代码的服务器端不是很精通)。再次感谢!那么,这是否意味着我永远无法在IE中缓存脚本?
$('#identifier').click(function () {
     $('#script-placeholder').append('<script type="text/javascript" 
    src="SERVICEURL?callback=test&t="+Math.random()></script>');
});
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    context.Response.Cache.SetNoStore();