jQuery.load() - 内部外部Javascript

时间:2009-10-14 13:17:00

标签: javascript jquery html load lazy-loading

我用

加载外部页面
 $('#myContainer').load('myfile.html');

在myfile.html中有一个

<script type="text/javascript" src="otherscript.js"></script>

有些用户报告没有加载otherscript.js ...我测试了所有常见的浏览器(firefox,即6/7,safari,opera等) - 我无法弄清楚为什么这不会工作..

另一个想法是...根据我的firebug浏览器不会缓存otherscript.js ..它加载

  

otherscript.js?_ = 1234785

(时间戳在这里:))

任何人都知道为什么有些浏览器不支持这个以及..我如何启用缓存?

MFG 克里斯托弗

3 个答案:

答案 0 :(得分:2)

.load函数只加载html。由于您不允许通过浏览器安全协议将外部脚本加载到浏览器中。但幸运的是,有.getScript来解决这个问题。看看:http://docs.jquery.com/Ajax/jQuery.getScript

..弗雷德里克

答案 1 :(得分:0)

为了避免缓存问题,您可以执行以下操作:

$('#myContainer').load('myfile.html?'+(new Date()).getTime());
myfile.html中的

<script type="text/javascript">

var script = document.createElement("script"); 
script.setAttribute('type','text/javascript'); 
script.setAttribute('src','otherscript.js?'+(new Date()).getTime()); 
document.body.appendChild(script);

</script>

根据您的需要提供此代码。

答案 2 :(得分:0)

正如fredrik指出的那样,.load不会加载外部文件,但是它会将结果传递给html来执行那里的任何javascript。

我有类似的问题,我想出了这个解决方案,从具有src属性的结果中提取任何脚本标记,然后使用$ .getScript加载属性值。

$('#exmple').load(url, function(result) {
    $(result).filter('script[src]').each(function () {
        var script = $(this).attr('src');        
        $.getScript(script);
    });
});