在运行时添加js文件时出现语法错误

时间:2015-02-23 12:32:19

标签: javascript jquery

所以我想在运行时添加一个js文件,我有这个简单的HTML

<!doctype html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <script src="jquery.js" type="text/javascript" ></script>
    <script src="main.js" type="text/javascript"></script>
</head>

<body onLoad="init();">
</body>
</hmtl>

在主要功能中我有这个

function init() {

    $.getScript("bots/test.js");
}

我在test.js的第一行收到语法错误,这个错误包含了这个函数

function hello(){

    console.log("hello");
}

但问题是,如果我在确认test.js文件加载后调用main.js中的hello函数就可以了。那么为什么会出现语法错误?

如果我在html中包含test.js,则错误也不存在。

注意:错误信息不会阻止任何可以告诉我仍然有效的内容。

编辑:chrome下的错误消息:

XMLHttpRequest cannot load file:///G:/tt/Desktop/black%20box/bots/test.js?_=1424695256510. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

要回答一些问题,我在按钮上使用点击事件来调用&#34; hello()&#34;函数,工作正常(在控制台输出你好,并没有任何错误)。

3 个答案:

答案 0 :(得分:2)

  

XMLHttpRequest无法加载文件:/// G:/tt/Desktop/black%20box/bots/test.js?_ = 1424695256510。交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource。

getScript通过Ajax加载文件。你不能在本地文件上做Ajax。在网络服务器上进行测试。

答案 1 :(得分:-2)

$.getScript使用ajax异步检索文件,然后执行它,它定义了一个hello函数但没有调用它。您可以在$.getScript成功处理程序中调用该函数:

$.getScript('bots/test.js', function () {
    hello();
});

答案 2 :(得分:-2)

也许您应该在<html>之前添加<head>代码?