getScript没有加载本地脚本

时间:2014-11-10 19:13:24

标签: javascript jquery getscript

我正在尝试使用getScript在本地加载javascript文件,但它返回404错误。

test.js - 我正在尝试加载的脚本:

var hello = function(){
    alert( "test" );
}
hello();

index.html中的jQuery代码:

<script type='text/javascript'>
    $.getScript( "js/test.js" )
        .fail( function( e ){ $( 'body' ).html( JSON.stringify( e ) ) } )
        .done( function(){ alert( "Success" ) } );
</script>

当我在Chrome中打开index.html时,getScript失败,并且正文中显示以下内容:

{"readyState":4,"responseText":"","status":404,"statusText":"error"}

显然jQuery无法找到指定的文件。但奇怪的是,当我使用传统标签时:

<script type='text/javascript' src='js/test.js'></script>

它工作正常。

此外,如果我从外部网站加载,例如:

,则getScript可以正常工作
$.getScript( "http://www.youtube.com/player_api" )

那可能是什么问题?

1 个答案:

答案 0 :(得分:2)

啊,关键是你在本地计算机上运行它并尝试从本地硬盘驱动器中获取脚本。

问题是$.getScript()使用Ajax调用来加载脚本,出于安全原因,默认情况下不允许Ajax调用从某些浏览器(如Chrome)中的硬盘驱动器中获取内容。如果从真实的Web服务器加载,这不会是一个问题。

您可以通过自己插入脚本标记而不是使用jQuery的$.getScript()或不尝试从本地硬盘驱动器运行它来解决此问题。还有一个Chrome命令行参数可以绕过此安全限制,您可以将其用于开发目的(不建议用于通用浏览)。